sbuild (Debian sbuild) 0.81.2+deb11u1 (31 August 2022) on debian-ci-siliconvalley +==============================================================================+ | guetzli 1.0.1-1 (arm64) Wed, 10 May 2023 15:09:29 +0000 | +==============================================================================+ Package: guetzli Version: 1.0.1-1 Source Version: 1.0.1-1 Distribution: unstable Machine Architecture: amd64 Host Architecture: arm64 Build Architecture: amd64 Build Profiles: cross nocheck Build Type: any I: NOTICE: Log filtering will replace 'var/run/schroot/mount/sid-amd64-sbuild-c85feac3-ab63-48f0-b0b2-59ed2e772399' with '<>' I: NOTICE: Log filtering will replace 'build/guetzli-kWGBpo/resolver-0xRMRt' with '<>' +------------------------------------------------------------------------------+ | Update chroot | +------------------------------------------------------------------------------+ Get:1 http://localhost:3142/debian sid InRelease [188 kB] Get:2 http://localhost:3142/debian sid/main Sources.diff/Index [63.6 kB] Get:3 http://localhost:3142/debian sid/main amd64 Packages.diff/Index [63.6 kB] Get:4 http://localhost:3142/debian sid/main Sources T-2023-05-10-1403.15-F-2023-05-10-0203.21.pdiff [22.2 kB] Get:5 http://localhost:3142/debian sid/main amd64 Packages T-2023-05-10-1403.15-F-2023-05-10-0203.21.pdiff [20.9 kB] Get:4 http://localhost:3142/debian sid/main Sources T-2023-05-10-1403.15-F-2023-05-10-0203.21.pdiff [22.2 kB] Get:5 http://localhost:3142/debian sid/main amd64 Packages T-2023-05-10-1403.15-F-2023-05-10-0203.21.pdiff [20.9 kB] Get:6 http://localhost:3142/debian sid/main arm64 Packages [9295 kB] Fetched 9653 kB in 2s (3952 kB/s) Reading package lists... Reading package lists... Building dependency tree... Reading state information... Calculating upgrade... The following packages will be upgraded: tzdata 1 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. Need to get 296 kB of archives. After this operation, 53.2 kB disk space will be freed. Get:1 http://localhost:3142/debian sid/main amd64 tzdata all 2023c-4 [296 kB] debconf: delaying package configuration, since apt-utils is not installed Fetched 296 kB in 0s (0 B/s) (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 15279 files and directories currently installed.) Preparing to unpack .../tzdata_2023c-4_all.deb ... Unpacking tzdata (2023c-4) over (2023c-3) ... Setting up tzdata (2023c-4) ... Current default time zone: 'Etc/UTC' Local time is now: Wed May 10 15:09:39 UTC 2023. Universal Time is now: Wed May 10 15:09:39 UTC 2023. Run 'dpkg-reconfigure tzdata' if you wish to change it. +------------------------------------------------------------------------------+ | Fetch source files | +------------------------------------------------------------------------------+ Check APT --------- Checking available source versions... Download source files with APT ------------------------------ Reading package lists... NOTICE: 'guetzli' packaging is maintained in the 'Git' version control system at: https://anonscm.debian.org/git/pkg-phototools/guetzli.git Please use: git clone https://anonscm.debian.org/git/pkg-phototools/guetzli.git to retrieve the latest (possibly unreleased) updates to the package. Need to get 102 kB of source archives. Get:1 http://localhost:3142/debian sid/main guetzli 1.0.1-1 (dsc) [1983 B] Get:2 http://localhost:3142/debian sid/main guetzli 1.0.1-1 (tar) [97.3 kB] Get:3 http://localhost:3142/debian sid/main guetzli 1.0.1-1 (diff) [2320 B] Fetched 102 kB in 0s (0 B/s) Download complete and in download only mode I: NOTICE: Log filtering will replace 'build/guetzli-kWGBpo/guetzli-1.0.1' with '<>' I: NOTICE: Log filtering will replace 'build/guetzli-kWGBpo' with '<>' +------------------------------------------------------------------------------+ | Install package build dependencies | +------------------------------------------------------------------------------+ Setup apt archive ----------------- Merged Build-Depends: debhelper (>= 10), asciidoc-base, libpng-dev, pkg-config, xmlto, libc-dev, libstdc++-dev, build-essential:amd64, fakeroot:amd64, crossbuild-essential-arm64:amd64, libc-dev:arm64, libstdc++-dev:arm64 Filtered Build-Depends: debhelper (>= 10), asciidoc-base, libpng-dev, pkg-config, xmlto, libc-dev, libstdc++-dev, build-essential:amd64, fakeroot:amd64, crossbuild-essential-arm64:amd64, libc-dev:arm64, libstdc++-dev:arm64 dpkg-deb: building package 'sbuild-build-depends-main-dummy' in '/<>/apt_archive/sbuild-build-depends-main-dummy.deb'. Ign:1 copy:/<>/apt_archive ./ InRelease Get:2 copy:/<>/apt_archive ./ Release [957 B] Ign:3 copy:/<>/apt_archive ./ Release.gpg Get:4 copy:/<>/apt_archive ./ Sources [427 B] Get:5 copy:/<>/apt_archive ./ Packages [517 B] Fetched 1901 B in 0s (0 B/s) Reading package lists... Reading package lists... Install main build dependencies (apt-based resolver) ---------------------------------------------------- Installing build dependencies Reading package lists... Building dependency tree... Reading state information... The following additional packages will be installed: asciidoc-base asciidoc-common autoconf automake autopoint autotools-dev binutils-aarch64-linux-gnu bsdextrautils cpp-12-aarch64-linux-gnu cpp-aarch64-linux-gnu cross-config crossbuild-essential-arm64 debhelper dh-autoreconf dh-strip-nondeterminism docbook-xml docbook-xsl dpkg-cross dwz file g++-12-aarch64-linux-gnu g++-aarch64-linux-gnu gcc-11-base:arm64 gcc-12-aarch64-linux-gnu gcc-12-aarch64-linux-gnu-base gcc-12-base:arm64 gcc-12-cross-base gcc-aarch64-linux-gnu gettext gettext-base groff-base intltool-debian libarchive-zip-perl libasan6:arm64 libasan8-arm64-cross libatomic1:arm64 libatomic1-arm64-cross libc6:arm64 libc6-arm64-cross libc6-dev:arm64 libc6-dev-arm64-cross libcom-err2:arm64 libconfig-auto-perl libconfig-inifiles-perl libcrypt-dev:arm64 libcrypt1:arm64 libdebhelper-perl libdebian-dpkgcross-perl libelf1 libexpat1 libfile-homedir-perl libfile-stripnondeterminism-perl libfile-which-perl libgcc-11-dev:arm64 libgcc-12-dev-arm64-cross libgcc-s1:arm64 libgcc-s1-arm64-cross libgomp1:arm64 libgomp1-arm64-cross libgssapi-krb5-2:arm64 libhwasan0:arm64 libhwasan0-arm64-cross libicu72 libio-string-perl libitm1:arm64 libitm1-arm64-cross libk5crypto3:arm64 libkeyutils1:arm64 libkrb5-3:arm64 libkrb5support0:arm64 liblocale-gettext-perl liblsan0:arm64 liblsan0-arm64-cross libmagic-mgc libmagic1 libncursesw6 libnsl-dev:arm64 libnsl2:arm64 libpipeline1 libpkgconf3 libpng-dev:arm64 libpng16-16:arm64 libpython3-stdlib libpython3.11-minimal libpython3.11-stdlib libreadline8 libsqlite3-0 libssl3:arm64 libstdc++-11-dev:arm64 libstdc++-12-dev-arm64-cross libstdc++6:arm64 libstdc++6-arm64-cross libsub-override-perl libtirpc-dev:arm64 libtirpc3:arm64 libtool libtsan0:arm64 libtsan2-arm64-cross libubsan1:arm64 libubsan1-arm64-cross libuchardet0 libxml-libxml-perl libxml-namespacesupport-perl libxml-sax-base-perl libxml-sax-perl libxml-simple-perl libxml2 libxml2-utils libxslt1.1 libyaml-perl linux-libc-dev:arm64 linux-libc-dev-arm64-cross m4 man-db media-types pkg-config:arm64 pkgconf:arm64 pkgconf-bin po-debconf python3 python3-minimal python3.11 python3.11-minimal readline-common sensible-utils sgml-base sgml-data ucf xml-core xmlto xsltproc zlib1g:arm64 zlib1g-dev:arm64 Suggested packages: asciidoc-doc docbook-utils source-highlight autoconf-archive gnu-standards autoconf-doc binutils-doc gcc-12-locales cpp-12-doc cpp-doc dh-make docbook docbook-dsssl docbook-defguide dbtoepub docbook-xsl-doc-html | docbook-xsl-doc-pdf | docbook-xsl-doc-text | docbook-xsl-doc docbook-xsl-saxon fop libsaxon-java libxalan2-java libxslthl-java xalan binutils-multiarch gcc-12-doc manpages-dev flex bison gdb-aarch64-linux-gnu gcc-doc gettext-doc libasprintf-dev libgettextpo-dev groff glibc-doc:arm64 libc-l10n:arm64 locales:arm64 libnss-nis:arm64 libnss-nisplus:arm64 manpages-dev:arm64 krb5-doc:arm64 krb5-user:arm64 libstdc++-11-doc:arm64 libtool-doc gfortran | fortran95-compiler gcj-jdk libyaml-shell-perl m4-doc apparmor less www-browser libmail-box-perl python3-doc python3-tk python3-venv python3.11-venv python3.11-doc binfmt-support readline-doc sgml-base-doc perlsgml w3-recs opensp w3m | lynx-cur | links texlive-htmlxml Recommended packages: curl | wget | lynx libidn2-0:arm64 libarchive-cpio-perl krb5-locales:arm64 libgpm2 libpng-tools:arm64 libltdl-dev libwww-perl libxml-sax-expat-perl libyaml-libyaml-perl | libyaml-syck-perl libmail-sendmail-perl ca-certificates dblatex | fop libpaper-utils zip The following NEW packages will be installed: asciidoc-base asciidoc-common autoconf automake autopoint autotools-dev binutils-aarch64-linux-gnu bsdextrautils cpp-12-aarch64-linux-gnu cpp-aarch64-linux-gnu cross-config crossbuild-essential-arm64 debhelper dh-autoreconf dh-strip-nondeterminism docbook-xml docbook-xsl dpkg-cross dwz file g++-12-aarch64-linux-gnu g++-aarch64-linux-gnu gcc-11-base:arm64 gcc-12-aarch64-linux-gnu gcc-12-aarch64-linux-gnu-base gcc-12-base:arm64 gcc-12-cross-base gcc-aarch64-linux-gnu gettext gettext-base groff-base intltool-debian libarchive-zip-perl libasan6:arm64 libasan8-arm64-cross libatomic1:arm64 libatomic1-arm64-cross libc6:arm64 libc6-arm64-cross libc6-dev:arm64 libc6-dev-arm64-cross libcom-err2:arm64 libconfig-auto-perl libconfig-inifiles-perl libcrypt-dev:arm64 libcrypt1:arm64 libdebhelper-perl libdebian-dpkgcross-perl libelf1 libexpat1 libfile-homedir-perl libfile-stripnondeterminism-perl libfile-which-perl libgcc-11-dev:arm64 libgcc-12-dev-arm64-cross libgcc-s1:arm64 libgcc-s1-arm64-cross libgomp1:arm64 libgomp1-arm64-cross libgssapi-krb5-2:arm64 libhwasan0:arm64 libhwasan0-arm64-cross libicu72 libio-string-perl libitm1:arm64 libitm1-arm64-cross libk5crypto3:arm64 libkeyutils1:arm64 libkrb5-3:arm64 libkrb5support0:arm64 liblocale-gettext-perl liblsan0:arm64 liblsan0-arm64-cross libmagic-mgc libmagic1 libncursesw6 libnsl-dev:arm64 libnsl2:arm64 libpipeline1 libpkgconf3 libpng-dev:arm64 libpng16-16:arm64 libpython3-stdlib libpython3.11-minimal libpython3.11-stdlib libreadline8 libsqlite3-0 libssl3:arm64 libstdc++-11-dev:arm64 libstdc++-12-dev-arm64-cross libstdc++6:arm64 libstdc++6-arm64-cross libsub-override-perl libtirpc-dev:arm64 libtirpc3:arm64 libtool libtsan0:arm64 libtsan2-arm64-cross libubsan1:arm64 libubsan1-arm64-cross libuchardet0 libxml-libxml-perl libxml-namespacesupport-perl libxml-sax-base-perl libxml-sax-perl libxml-simple-perl libxml2 libxml2-utils libxslt1.1 libyaml-perl linux-libc-dev:arm64 linux-libc-dev-arm64-cross m4 man-db media-types pkg-config:arm64 pkgconf:arm64 pkgconf-bin po-debconf python3 python3-minimal python3.11 python3.11-minimal readline-common sbuild-build-depends-main-dummy:arm64 sensible-utils sgml-base sgml-data ucf xml-core xmlto xsltproc zlib1g:arm64 zlib1g-dev:arm64 0 upgraded, 134 newly installed, 0 to remove and 0 not upgraded. Need to get 105 MB of archives. After this operation, 444 MB of additional disk space will be used. Get:1 copy:/<>/apt_archive ./ sbuild-build-depends-main-dummy 0.invalid.0 [944 B] Get:2 http://localhost:3142/debian sid/main amd64 liblocale-gettext-perl amd64 1.07-5 [15.4 kB] Get:3 http://localhost:3142/debian sid/main amd64 libpython3.11-minimal amd64 3.11.2-6 [813 kB] Get:4 http://localhost:3142/debian sid/main amd64 libexpat1 amd64 2.5.0-1 [99.3 kB] Get:5 http://localhost:3142/debian sid/main amd64 python3.11-minimal amd64 3.11.2-6 [2064 kB] Get:6 http://localhost:3142/debian sid/main amd64 python3-minimal amd64 3.11.2-1+b1 [26.3 kB] Get:7 http://localhost:3142/debian sid/main amd64 media-types all 10.0.0 [26.1 kB] Get:8 http://localhost:3142/debian sid/main amd64 libncursesw6 amd64 6.4-4 [134 kB] Get:9 http://localhost:3142/debian sid/main amd64 readline-common all 8.2-1.3 [69.0 kB] Get:10 http://localhost:3142/debian sid/main amd64 libreadline8 amd64 8.2-1.3 [166 kB] Get:11 http://localhost:3142/debian sid/main amd64 libsqlite3-0 amd64 3.40.1-2 [837 kB] Get:12 http://localhost:3142/debian sid/main amd64 libpython3.11-stdlib amd64 3.11.2-6 [1796 kB] Get:13 http://localhost:3142/debian sid/main amd64 python3.11 amd64 3.11.2-6 [572 kB] Get:14 http://localhost:3142/debian sid/main amd64 libpython3-stdlib amd64 3.11.2-1+b1 [9312 B] Get:15 http://localhost:3142/debian sid/main amd64 python3 amd64 3.11.2-1+b1 [26.3 kB] Get:16 http://localhost:3142/debian sid/main amd64 sgml-base all 1.31 [15.4 kB] Get:17 http://localhost:3142/debian sid/main amd64 sensible-utils all 0.0.17+nmu1 [19.0 kB] Get:18 http://localhost:3142/debian sid/main amd64 libmagic-mgc amd64 1:5.44-3 [305 kB] Get:19 http://localhost:3142/debian sid/main amd64 libmagic1 amd64 1:5.44-3 [104 kB] Get:20 http://localhost:3142/debian sid/main amd64 file amd64 1:5.44-3 [42.5 kB] Get:21 http://localhost:3142/debian sid/main amd64 gettext-base amd64 0.21-12 [160 kB] Get:22 http://localhost:3142/debian sid/main amd64 libuchardet0 amd64 0.0.7-1 [67.8 kB] Get:23 http://localhost:3142/debian sid/main amd64 groff-base amd64 1.22.4-10 [916 kB] Get:24 http://localhost:3142/debian sid/main amd64 bsdextrautils amd64 2.38.1-5+b1 [86.6 kB] Get:25 http://localhost:3142/debian sid/main amd64 libpipeline1 amd64 1.5.7-1 [38.5 kB] Get:26 http://localhost:3142/debian sid/main amd64 man-db amd64 2.11.2-2 [1386 kB] Get:27 http://localhost:3142/debian sid/main amd64 ucf all 3.0043+nmu1 [55.2 kB] Get:28 http://localhost:3142/debian sid/main amd64 asciidoc-common all 10.2.0-1 [109 kB] Get:29 http://localhost:3142/debian sid/main amd64 xml-core all 0.18+nmu1 [23.8 kB] Get:30 http://localhost:3142/debian sid/main amd64 docbook-xsl all 1.79.2+dfsg-2 [1237 kB] Get:31 http://localhost:3142/debian sid/main amd64 libicu72 amd64 72.1-3 [9376 kB] Get:32 http://localhost:3142/debian sid/main amd64 libxml2 amd64 2.9.14+dfsg-1.2 [687 kB] Get:33 http://localhost:3142/debian sid/main amd64 libxml2-utils amd64 2.9.14+dfsg-1.2 [98.8 kB] Get:34 http://localhost:3142/debian sid/main amd64 libxslt1.1 amd64 1.1.35-1 [242 kB] Get:35 http://localhost:3142/debian sid/main amd64 xsltproc amd64 1.1.35-1 [126 kB] Get:36 http://localhost:3142/debian sid/main amd64 asciidoc-base all 10.2.0-1 [89.5 kB] Get:37 http://localhost:3142/debian sid/main amd64 m4 amd64 1.4.19-3 [287 kB] Get:38 http://localhost:3142/debian sid/main amd64 autoconf all 2.71-3 [332 kB] Get:39 http://localhost:3142/debian sid/main amd64 autotools-dev all 20220109.1 [51.6 kB] Get:40 http://localhost:3142/debian sid/main amd64 automake all 1:1.16.5-1.3 [823 kB] Get:41 http://localhost:3142/debian sid/main amd64 autopoint all 0.21-12 [495 kB] Get:42 http://localhost:3142/debian sid/main amd64 binutils-aarch64-linux-gnu amd64 2.40-2 [3353 kB] Get:43 http://localhost:3142/debian sid/main amd64 gcc-12-aarch64-linux-gnu-base amd64 12.2.0-14cross1 [37.7 kB] Get:44 http://localhost:3142/debian sid/main amd64 cpp-12-aarch64-linux-gnu amd64 12.2.0-14cross1 [9150 kB] Get:45 http://localhost:3142/debian sid/main amd64 cpp-aarch64-linux-gnu amd64 4:12.2.0-3 [3980 B] Get:46 http://localhost:3142/debian sid/main amd64 cross-config all 2.6.20 [16.3 kB] Get:47 http://localhost:3142/debian sid/main amd64 gcc-12-cross-base all 12.2.0-14cross1 [33.2 kB] Get:48 http://localhost:3142/debian sid/main amd64 libc6-arm64-cross all 2.36-8cross1 [1005 kB] Get:49 http://localhost:3142/debian sid/main amd64 libgcc-s1-arm64-cross all 12.2.0-14cross1 [34.8 kB] Get:50 http://localhost:3142/debian sid/main amd64 libgomp1-arm64-cross all 12.2.0-14cross1 [102 kB] Get:51 http://localhost:3142/debian sid/main amd64 libitm1-arm64-cross all 12.2.0-14cross1 [23.5 kB] Get:52 http://localhost:3142/debian sid/main amd64 libatomic1-arm64-cross all 12.2.0-14cross1 [9292 B] Get:53 http://localhost:3142/debian sid/main amd64 libasan8-arm64-cross all 12.2.0-14cross1 [2097 kB] Get:54 http://localhost:3142/debian sid/main amd64 liblsan0-arm64-cross all 12.2.0-14cross1 [926 kB] Get:55 http://localhost:3142/debian sid/main amd64 libtsan2-arm64-cross all 12.2.0-14cross1 [2179 kB] Get:56 http://localhost:3142/debian sid/main amd64 libstdc++6-arm64-cross all 12.2.0-14cross1 [514 kB] Get:57 http://localhost:3142/debian sid/main amd64 libubsan1-arm64-cross all 12.2.0-14cross1 [861 kB] Get:58 http://localhost:3142/debian sid/main amd64 libhwasan0-arm64-cross all 12.2.0-14cross1 [998 kB] Get:59 http://localhost:3142/debian sid/main amd64 libgcc-12-dev-arm64-cross all 12.2.0-14cross1 [961 kB] Get:60 http://localhost:3142/debian sid/main amd64 gcc-12-aarch64-linux-gnu amd64 12.2.0-14cross1 [18.0 MB] Get:61 http://localhost:3142/debian sid/main amd64 gcc-aarch64-linux-gnu amd64 4:12.2.0-3 [1468 B] Get:62 http://localhost:3142/debian sid/main amd64 linux-libc-dev-arm64-cross all 6.1.4-1cross1 [1815 kB] Get:63 http://localhost:3142/debian sid/main amd64 libc6-dev-arm64-cross all 2.36-8cross1 [1424 kB] Get:64 http://localhost:3142/debian sid/main amd64 libstdc++-12-dev-arm64-cross all 12.2.0-14cross1 [1975 kB] Get:65 http://localhost:3142/debian sid/main amd64 g++-12-aarch64-linux-gnu amd64 12.2.0-14cross1 [10.1 MB] Get:66 http://localhost:3142/debian sid/main amd64 g++-aarch64-linux-gnu amd64 4:12.2.0-3 [1176 B] Get:67 http://localhost:3142/debian sid/main amd64 libconfig-inifiles-perl all 3.000003-2 [45.9 kB] Get:68 http://localhost:3142/debian sid/main amd64 libio-string-perl all 1.08-4 [12.1 kB] Get:69 http://localhost:3142/debian sid/main amd64 libxml-namespacesupport-perl all 1.12-2 [15.1 kB] Get:70 http://localhost:3142/debian sid/main amd64 libxml-sax-base-perl all 1.09-3 [20.6 kB] Get:71 http://localhost:3142/debian sid/main amd64 libxml-sax-perl all 1.02+dfsg-3 [59.4 kB] Get:72 http://localhost:3142/debian sid/main amd64 libxml-libxml-perl amd64 2.0207+dfsg+really+2.0134-1+b1 [322 kB] Get:73 http://localhost:3142/debian sid/main amd64 libxml-simple-perl all 2.25-2 [69.8 kB] Get:74 http://localhost:3142/debian sid/main amd64 libyaml-perl all 1.30-2 [63.4 kB] Get:75 http://localhost:3142/debian sid/main amd64 libconfig-auto-perl all 0.44-2 [19.2 kB] Get:76 http://localhost:3142/debian sid/main amd64 libfile-which-perl all 1.27-2 [15.1 kB] Get:77 http://localhost:3142/debian sid/main amd64 libfile-homedir-perl all 1.006-2 [42.4 kB] Get:78 http://localhost:3142/debian sid/main amd64 libdebian-dpkgcross-perl all 2.6.20 [15.3 kB] Get:79 http://localhost:3142/debian sid/main amd64 dpkg-cross all 2.6.20 [25.8 kB] Get:80 http://localhost:3142/debian sid/main amd64 crossbuild-essential-arm64 all 12.9 [6708 B] Get:81 http://localhost:3142/debian sid/main amd64 libdebhelper-perl all 13.11.4 [81.2 kB] Get:82 http://localhost:3142/debian sid/main amd64 libtool all 2.4.7-5 [517 kB] Get:83 http://localhost:3142/debian sid/main amd64 dh-autoreconf all 20 [17.1 kB] Get:84 http://localhost:3142/debian sid/main amd64 libarchive-zip-perl all 1.68-1 [104 kB] Get:85 http://localhost:3142/debian sid/main amd64 libsub-override-perl all 0.09-4 [9304 B] Get:86 http://localhost:3142/debian sid/main amd64 libfile-stripnondeterminism-perl all 1.13.1-1 [19.4 kB] Get:87 http://localhost:3142/debian sid/main amd64 dh-strip-nondeterminism all 1.13.1-1 [8620 B] Get:88 http://localhost:3142/debian sid/main amd64 libelf1 amd64 0.188-2.1 [174 kB] Get:89 http://localhost:3142/debian sid/main amd64 dwz amd64 0.15-1 [109 kB] Get:90 http://localhost:3142/debian sid/main amd64 gettext amd64 0.21-12 [1300 kB] Get:91 http://localhost:3142/debian sid/main amd64 intltool-debian all 0.35.0+20060710.6 [22.9 kB] Get:92 http://localhost:3142/debian sid/main amd64 po-debconf all 1.0.21+nmu1 [248 kB] Get:93 http://localhost:3142/debian sid/main amd64 debhelper all 13.11.4 [942 kB] Get:94 http://localhost:3142/debian sid/main amd64 sgml-data all 2.0.11+nmu1 [179 kB] Get:95 http://localhost:3142/debian sid/main amd64 docbook-xml all 4.5-12 [85.2 kB] Get:96 http://localhost:3142/debian sid/main arm64 gcc-11-base arm64 11.3.0-13 [38.9 kB] Get:97 http://localhost:3142/debian sid/main arm64 gcc-12-base arm64 12.2.0-14 [37.5 kB] Get:98 http://localhost:3142/debian sid/main arm64 libgcc-s1 arm64 12.2.0-14 [34.8 kB] Get:99 http://localhost:3142/debian sid/main arm64 libc6 arm64 2.36-9 [2313 kB] Get:100 http://localhost:3142/debian sid/main arm64 libasan6 arm64 11.3.0-13 [1951 kB] Get:101 http://localhost:3142/debian sid/main arm64 libatomic1 arm64 12.2.0-14 [9536 B] Get:102 http://localhost:3142/debian sid/main arm64 linux-libc-dev arm64 6.1.27-1 [1751 kB] Get:103 http://localhost:3142/debian sid/main arm64 libcrypt1 arm64 1:4.4.33-2 [90.0 kB] Get:104 http://localhost:3142/debian sid/main arm64 libcrypt-dev arm64 1:4.4.33-2 [121 kB] Get:105 http://localhost:3142/debian sid/main arm64 libcom-err2 arm64 1.47.0-2 [19.6 kB] Get:106 http://localhost:3142/debian sid/main arm64 libkrb5support0 arm64 1.20.1-1+b1 [31.7 kB] Get:107 http://localhost:3142/debian sid/main arm64 libk5crypto3 arm64 1.20.1-1+b1 [79.2 kB] Get:108 http://localhost:3142/debian sid/main arm64 libkeyutils1 arm64 1.6.3-2 [8844 B] Get:109 http://localhost:3142/debian sid/main arm64 libssl3 arm64 3.0.8-1 [1801 kB] Get:110 http://localhost:3142/debian sid/main arm64 libkrb5-3 arm64 1.20.1-1+b1 [313 kB] Get:111 http://localhost:3142/debian sid/main arm64 libgssapi-krb5-2 arm64 1.20.1-1+b1 [123 kB] Get:112 http://localhost:3142/debian sid/main arm64 libtirpc3 arm64 1.3.3+ds-1 [80.9 kB] Get:113 http://localhost:3142/debian sid/main arm64 libnsl2 arm64 1.3.0-2 [36.9 kB] Get:114 http://localhost:3142/debian sid/main arm64 libtirpc-dev arm64 1.3.3+ds-1 [194 kB] Get:115 http://localhost:3142/debian sid/main arm64 libnsl-dev arm64 1.3.0-2 [66.1 kB] Get:116 http://localhost:3142/debian sid/main arm64 libc6-dev arm64 2.36-9 [1428 kB] Get:117 http://localhost:3142/debian sid/main arm64 libgomp1 arm64 12.2.0-14 [104 kB] Get:118 http://localhost:3142/debian sid/main arm64 libitm1 arm64 12.2.0-14 [23.9 kB] Get:119 http://localhost:3142/debian sid/main arm64 liblsan0 arm64 12.2.0-14 [926 kB] Get:120 http://localhost:3142/debian sid/main arm64 libtsan0 arm64 11.3.0-13 [1957 kB] Get:121 http://localhost:3142/debian sid/main arm64 libstdc++6 arm64 12.2.0-14 [557 kB] Get:122 http://localhost:3142/debian sid/main arm64 libubsan1 arm64 12.2.0-14 [862 kB] Get:123 http://localhost:3142/debian sid/main arm64 libhwasan0 arm64 12.2.0-14 [998 kB] Get:124 http://localhost:3142/debian sid/main arm64 libgcc-11-dev arm64 11.3.0-13 [928 kB] Get:125 http://localhost:3142/debian sid/main amd64 libpkgconf3 amd64 1.8.1-1 [36.1 kB] Get:126 http://localhost:3142/debian sid/main arm64 zlib1g arm64 1:1.2.13.dfsg-1 [82.7 kB] Get:127 http://localhost:3142/debian sid/main arm64 libpng16-16 arm64 1.6.39-2 [269 kB] Get:128 http://localhost:3142/debian sid/main arm64 zlib1g-dev arm64 1:1.2.13.dfsg-1 [913 kB] Get:129 http://localhost:3142/debian sid/main arm64 libpng-dev arm64 1.6.39-2 [354 kB] Get:130 http://localhost:3142/debian sid/main arm64 libstdc++-11-dev arm64 11.3.0-13 [1927 kB] Get:131 http://localhost:3142/debian sid/main amd64 pkgconf-bin amd64 1.8.1-1 [29.5 kB] Get:132 http://localhost:3142/debian sid/main arm64 pkgconf arm64 1.8.1-1 [25.9 kB] Get:133 http://localhost:3142/debian sid/main arm64 pkg-config arm64 1.8.1-1 [13.7 kB] Get:134 http://localhost:3142/debian sid/main amd64 xmlto amd64 0.0.28-2.1 [33.6 kB] debconf: delaying package configuration, since apt-utils is not installed Fetched 105 MB in 1s (183 MB/s) Selecting previously unselected package liblocale-gettext-perl. (Reading database ... 15277 files and directories currently installed.) Preparing to unpack .../liblocale-gettext-perl_1.07-5_amd64.deb ... Unpacking liblocale-gettext-perl (1.07-5) ... Selecting previously unselected package libpython3.11-minimal:amd64. Preparing to unpack .../libpython3.11-minimal_3.11.2-6_amd64.deb ... Unpacking libpython3.11-minimal:amd64 (3.11.2-6) ... Selecting previously unselected package libexpat1:amd64. Preparing to unpack .../libexpat1_2.5.0-1_amd64.deb ... Unpacking libexpat1:amd64 (2.5.0-1) ... Selecting previously unselected package python3.11-minimal. Preparing to unpack .../python3.11-minimal_3.11.2-6_amd64.deb ... Unpacking python3.11-minimal (3.11.2-6) ... Setting up libpython3.11-minimal:amd64 (3.11.2-6) ... Setting up libexpat1:amd64 (2.5.0-1) ... Setting up python3.11-minimal (3.11.2-6) ... Selecting previously unselected package python3-minimal. (Reading database ... 15607 files and directories currently installed.) Preparing to unpack .../0-python3-minimal_3.11.2-1+b1_amd64.deb ... Unpacking python3-minimal (3.11.2-1+b1) ... Selecting previously unselected package media-types. Preparing to unpack .../1-media-types_10.0.0_all.deb ... Unpacking media-types (10.0.0) ... Selecting previously unselected package libncursesw6:amd64. Preparing to unpack .../2-libncursesw6_6.4-4_amd64.deb ... Unpacking libncursesw6:amd64 (6.4-4) ... Selecting previously unselected package readline-common. Preparing to unpack .../3-readline-common_8.2-1.3_all.deb ... Unpacking readline-common (8.2-1.3) ... Selecting previously unselected package libreadline8:amd64. Preparing to unpack .../4-libreadline8_8.2-1.3_amd64.deb ... Unpacking libreadline8:amd64 (8.2-1.3) ... Selecting previously unselected package libsqlite3-0:amd64. Preparing to unpack .../5-libsqlite3-0_3.40.1-2_amd64.deb ... Unpacking libsqlite3-0:amd64 (3.40.1-2) ... Selecting previously unselected package libpython3.11-stdlib:amd64. Preparing to unpack .../6-libpython3.11-stdlib_3.11.2-6_amd64.deb ... Unpacking libpython3.11-stdlib:amd64 (3.11.2-6) ... Selecting previously unselected package python3.11. Preparing to unpack .../7-python3.11_3.11.2-6_amd64.deb ... Unpacking python3.11 (3.11.2-6) ... Selecting previously unselected package libpython3-stdlib:amd64. Preparing to unpack .../8-libpython3-stdlib_3.11.2-1+b1_amd64.deb ... Unpacking libpython3-stdlib:amd64 (3.11.2-1+b1) ... Setting up python3-minimal (3.11.2-1+b1) ... Selecting previously unselected package python3. (Reading database ... 16058 files and directories currently installed.) Preparing to unpack .../000-python3_3.11.2-1+b1_amd64.deb ... Unpacking python3 (3.11.2-1+b1) ... Selecting previously unselected package sgml-base. Preparing to unpack .../001-sgml-base_1.31_all.deb ... Unpacking sgml-base (1.31) ... Selecting previously unselected package sensible-utils. Preparing to unpack .../002-sensible-utils_0.0.17+nmu1_all.deb ... Unpacking sensible-utils (0.0.17+nmu1) ... Selecting previously unselected package libmagic-mgc. Preparing to unpack .../003-libmagic-mgc_1%3a5.44-3_amd64.deb ... Unpacking libmagic-mgc (1:5.44-3) ... Selecting previously unselected package libmagic1:amd64. Preparing to unpack .../004-libmagic1_1%3a5.44-3_amd64.deb ... Unpacking libmagic1:amd64 (1:5.44-3) ... Selecting previously unselected package file. Preparing to unpack .../005-file_1%3a5.44-3_amd64.deb ... Unpacking file (1:5.44-3) ... Selecting previously unselected package gettext-base. Preparing to unpack .../006-gettext-base_0.21-12_amd64.deb ... Unpacking gettext-base (0.21-12) ... Selecting previously unselected package libuchardet0:amd64. Preparing to unpack .../007-libuchardet0_0.0.7-1_amd64.deb ... Unpacking libuchardet0:amd64 (0.0.7-1) ... Selecting previously unselected package groff-base. Preparing to unpack .../008-groff-base_1.22.4-10_amd64.deb ... Unpacking groff-base (1.22.4-10) ... Selecting previously unselected package bsdextrautils. Preparing to unpack .../009-bsdextrautils_2.38.1-5+b1_amd64.deb ... Unpacking bsdextrautils (2.38.1-5+b1) ... Selecting previously unselected package libpipeline1:amd64. Preparing to unpack .../010-libpipeline1_1.5.7-1_amd64.deb ... Unpacking libpipeline1:amd64 (1.5.7-1) ... Selecting previously unselected package man-db. Preparing to unpack .../011-man-db_2.11.2-2_amd64.deb ... Unpacking man-db (2.11.2-2) ... Selecting previously unselected package ucf. Preparing to unpack .../012-ucf_3.0043+nmu1_all.deb ... Moving old data out of the way Unpacking ucf (3.0043+nmu1) ... Selecting previously unselected package asciidoc-common. Preparing to unpack .../013-asciidoc-common_10.2.0-1_all.deb ... Unpacking asciidoc-common (10.2.0-1) ... Selecting previously unselected package xml-core. Preparing to unpack .../014-xml-core_0.18+nmu1_all.deb ... Unpacking xml-core (0.18+nmu1) ... Selecting previously unselected package docbook-xsl. Preparing to unpack .../015-docbook-xsl_1.79.2+dfsg-2_all.deb ... Unpacking docbook-xsl (1.79.2+dfsg-2) ... Selecting previously unselected package libicu72:amd64. Preparing to unpack .../016-libicu72_72.1-3_amd64.deb ... Unpacking libicu72:amd64 (72.1-3) ... Selecting previously unselected package libxml2:amd64. Preparing to unpack .../017-libxml2_2.9.14+dfsg-1.2_amd64.deb ... Unpacking libxml2:amd64 (2.9.14+dfsg-1.2) ... Selecting previously unselected package libxml2-utils. Preparing to unpack .../018-libxml2-utils_2.9.14+dfsg-1.2_amd64.deb ... Unpacking libxml2-utils (2.9.14+dfsg-1.2) ... Selecting previously unselected package libxslt1.1:amd64. Preparing to unpack .../019-libxslt1.1_1.1.35-1_amd64.deb ... Unpacking libxslt1.1:amd64 (1.1.35-1) ... Selecting previously unselected package xsltproc. Preparing to unpack .../020-xsltproc_1.1.35-1_amd64.deb ... Unpacking xsltproc (1.1.35-1) ... Selecting previously unselected package asciidoc-base. Preparing to unpack .../021-asciidoc-base_10.2.0-1_all.deb ... Unpacking asciidoc-base (10.2.0-1) ... Selecting previously unselected package m4. Preparing to unpack .../022-m4_1.4.19-3_amd64.deb ... Unpacking m4 (1.4.19-3) ... Selecting previously unselected package autoconf. Preparing to unpack .../023-autoconf_2.71-3_all.deb ... Unpacking autoconf (2.71-3) ... Selecting previously unselected package autotools-dev. Preparing to unpack .../024-autotools-dev_20220109.1_all.deb ... Unpacking autotools-dev (20220109.1) ... Selecting previously unselected package automake. Preparing to unpack .../025-automake_1%3a1.16.5-1.3_all.deb ... Unpacking automake (1:1.16.5-1.3) ... Selecting previously unselected package autopoint. Preparing to unpack .../026-autopoint_0.21-12_all.deb ... Unpacking autopoint (0.21-12) ... Selecting previously unselected package binutils-aarch64-linux-gnu. Preparing to unpack .../027-binutils-aarch64-linux-gnu_2.40-2_amd64.deb ... Unpacking binutils-aarch64-linux-gnu (2.40-2) ... Selecting previously unselected package gcc-12-aarch64-linux-gnu-base:amd64. Preparing to unpack .../028-gcc-12-aarch64-linux-gnu-base_12.2.0-14cross1_amd64.deb ... Unpacking gcc-12-aarch64-linux-gnu-base:amd64 (12.2.0-14cross1) ... Selecting previously unselected package cpp-12-aarch64-linux-gnu. Preparing to unpack .../029-cpp-12-aarch64-linux-gnu_12.2.0-14cross1_amd64.deb ... Unpacking cpp-12-aarch64-linux-gnu (12.2.0-14cross1) ... Selecting previously unselected package cpp-aarch64-linux-gnu. Preparing to unpack .../030-cpp-aarch64-linux-gnu_4%3a12.2.0-3_amd64.deb ... Unpacking cpp-aarch64-linux-gnu (4:12.2.0-3) ... Selecting previously unselected package cross-config. Preparing to unpack .../031-cross-config_2.6.20_all.deb ... Unpacking cross-config (2.6.20) ... Selecting previously unselected package gcc-12-cross-base. Preparing to unpack .../032-gcc-12-cross-base_12.2.0-14cross1_all.deb ... Unpacking gcc-12-cross-base (12.2.0-14cross1) ... Selecting previously unselected package libc6-arm64-cross. Preparing to unpack .../033-libc6-arm64-cross_2.36-8cross1_all.deb ... Unpacking libc6-arm64-cross (2.36-8cross1) ... Selecting previously unselected package libgcc-s1-arm64-cross. Preparing to unpack .../034-libgcc-s1-arm64-cross_12.2.0-14cross1_all.deb ... Unpacking libgcc-s1-arm64-cross (12.2.0-14cross1) ... Selecting previously unselected package libgomp1-arm64-cross. Preparing to unpack .../035-libgomp1-arm64-cross_12.2.0-14cross1_all.deb ... Unpacking libgomp1-arm64-cross (12.2.0-14cross1) ... Selecting previously unselected package libitm1-arm64-cross. Preparing to unpack .../036-libitm1-arm64-cross_12.2.0-14cross1_all.deb ... Unpacking libitm1-arm64-cross (12.2.0-14cross1) ... Selecting previously unselected package libatomic1-arm64-cross. Preparing to unpack .../037-libatomic1-arm64-cross_12.2.0-14cross1_all.deb ... Unpacking libatomic1-arm64-cross (12.2.0-14cross1) ... Selecting previously unselected package libasan8-arm64-cross. Preparing to unpack .../038-libasan8-arm64-cross_12.2.0-14cross1_all.deb ... Unpacking libasan8-arm64-cross (12.2.0-14cross1) ... Selecting previously unselected package liblsan0-arm64-cross. Preparing to unpack .../039-liblsan0-arm64-cross_12.2.0-14cross1_all.deb ... Unpacking liblsan0-arm64-cross (12.2.0-14cross1) ... Selecting previously unselected package libtsan2-arm64-cross. Preparing to unpack .../040-libtsan2-arm64-cross_12.2.0-14cross1_all.deb ... Unpacking libtsan2-arm64-cross (12.2.0-14cross1) ... Selecting previously unselected package libstdc++6-arm64-cross. Preparing to unpack .../041-libstdc++6-arm64-cross_12.2.0-14cross1_all.deb ... Unpacking libstdc++6-arm64-cross (12.2.0-14cross1) ... Selecting previously unselected package libubsan1-arm64-cross. Preparing to unpack .../042-libubsan1-arm64-cross_12.2.0-14cross1_all.deb ... Unpacking libubsan1-arm64-cross (12.2.0-14cross1) ... Selecting previously unselected package libhwasan0-arm64-cross. Preparing to unpack .../043-libhwasan0-arm64-cross_12.2.0-14cross1_all.deb ... Unpacking libhwasan0-arm64-cross (12.2.0-14cross1) ... Selecting previously unselected package libgcc-12-dev-arm64-cross. Preparing to unpack .../044-libgcc-12-dev-arm64-cross_12.2.0-14cross1_all.deb ... Unpacking libgcc-12-dev-arm64-cross (12.2.0-14cross1) ... Selecting previously unselected package gcc-12-aarch64-linux-gnu. Preparing to unpack .../045-gcc-12-aarch64-linux-gnu_12.2.0-14cross1_amd64.deb ... Unpacking gcc-12-aarch64-linux-gnu (12.2.0-14cross1) ... Selecting previously unselected package gcc-aarch64-linux-gnu. Preparing to unpack .../046-gcc-aarch64-linux-gnu_4%3a12.2.0-3_amd64.deb ... Unpacking gcc-aarch64-linux-gnu (4:12.2.0-3) ... Selecting previously unselected package linux-libc-dev-arm64-cross. Preparing to unpack .../047-linux-libc-dev-arm64-cross_6.1.4-1cross1_all.deb ... Unpacking linux-libc-dev-arm64-cross (6.1.4-1cross1) ... Selecting previously unselected package libc6-dev-arm64-cross. Preparing to unpack .../048-libc6-dev-arm64-cross_2.36-8cross1_all.deb ... Unpacking libc6-dev-arm64-cross (2.36-8cross1) ... Selecting previously unselected package libstdc++-12-dev-arm64-cross. Preparing to unpack .../049-libstdc++-12-dev-arm64-cross_12.2.0-14cross1_all.deb ... Unpacking libstdc++-12-dev-arm64-cross (12.2.0-14cross1) ... Selecting previously unselected package g++-12-aarch64-linux-gnu. Preparing to unpack .../050-g++-12-aarch64-linux-gnu_12.2.0-14cross1_amd64.deb ... Unpacking g++-12-aarch64-linux-gnu (12.2.0-14cross1) ... Selecting previously unselected package g++-aarch64-linux-gnu. Preparing to unpack .../051-g++-aarch64-linux-gnu_4%3a12.2.0-3_amd64.deb ... Unpacking g++-aarch64-linux-gnu (4:12.2.0-3) ... Selecting previously unselected package libconfig-inifiles-perl. Preparing to unpack .../052-libconfig-inifiles-perl_3.000003-2_all.deb ... Unpacking libconfig-inifiles-perl (3.000003-2) ... Selecting previously unselected package libio-string-perl. Preparing to unpack .../053-libio-string-perl_1.08-4_all.deb ... Unpacking libio-string-perl (1.08-4) ... Selecting previously unselected package libxml-namespacesupport-perl. Preparing to unpack .../054-libxml-namespacesupport-perl_1.12-2_all.deb ... Unpacking libxml-namespacesupport-perl (1.12-2) ... Selecting previously unselected package libxml-sax-base-perl. Preparing to unpack .../055-libxml-sax-base-perl_1.09-3_all.deb ... Unpacking libxml-sax-base-perl (1.09-3) ... Selecting previously unselected package libxml-sax-perl. Preparing to unpack .../056-libxml-sax-perl_1.02+dfsg-3_all.deb ... Unpacking libxml-sax-perl (1.02+dfsg-3) ... Selecting previously unselected package libxml-libxml-perl. Preparing to unpack .../057-libxml-libxml-perl_2.0207+dfsg+really+2.0134-1+b1_amd64.deb ... Unpacking libxml-libxml-perl (2.0207+dfsg+really+2.0134-1+b1) ... Selecting previously unselected package libxml-simple-perl. Preparing to unpack .../058-libxml-simple-perl_2.25-2_all.deb ... Unpacking libxml-simple-perl (2.25-2) ... Selecting previously unselected package libyaml-perl. Preparing to unpack .../059-libyaml-perl_1.30-2_all.deb ... Unpacking libyaml-perl (1.30-2) ... Selecting previously unselected package libconfig-auto-perl. Preparing to unpack .../060-libconfig-auto-perl_0.44-2_all.deb ... Unpacking libconfig-auto-perl (0.44-2) ... Selecting previously unselected package libfile-which-perl. Preparing to unpack .../061-libfile-which-perl_1.27-2_all.deb ... Unpacking libfile-which-perl (1.27-2) ... Selecting previously unselected package libfile-homedir-perl. Preparing to unpack .../062-libfile-homedir-perl_1.006-2_all.deb ... Unpacking libfile-homedir-perl (1.006-2) ... Selecting previously unselected package libdebian-dpkgcross-perl. Preparing to unpack .../063-libdebian-dpkgcross-perl_2.6.20_all.deb ... Unpacking libdebian-dpkgcross-perl (2.6.20) ... Selecting previously unselected package dpkg-cross. Preparing to unpack .../064-dpkg-cross_2.6.20_all.deb ... Unpacking dpkg-cross (2.6.20) ... Selecting previously unselected package crossbuild-essential-arm64. Preparing to unpack .../065-crossbuild-essential-arm64_12.9_all.deb ... Unpacking crossbuild-essential-arm64 (12.9) ... Selecting previously unselected package libdebhelper-perl. Preparing to unpack .../066-libdebhelper-perl_13.11.4_all.deb ... Unpacking libdebhelper-perl (13.11.4) ... Selecting previously unselected package libtool. Preparing to unpack .../067-libtool_2.4.7-5_all.deb ... Unpacking libtool (2.4.7-5) ... Selecting previously unselected package dh-autoreconf. Preparing to unpack .../068-dh-autoreconf_20_all.deb ... Unpacking dh-autoreconf (20) ... Selecting previously unselected package libarchive-zip-perl. Preparing to unpack .../069-libarchive-zip-perl_1.68-1_all.deb ... Unpacking libarchive-zip-perl (1.68-1) ... Selecting previously unselected package libsub-override-perl. Preparing to unpack .../070-libsub-override-perl_0.09-4_all.deb ... Unpacking libsub-override-perl (0.09-4) ... Selecting previously unselected package libfile-stripnondeterminism-perl. Preparing to unpack .../071-libfile-stripnondeterminism-perl_1.13.1-1_all.deb ... Unpacking libfile-stripnondeterminism-perl (1.13.1-1) ... Selecting previously unselected package dh-strip-nondeterminism. Preparing to unpack .../072-dh-strip-nondeterminism_1.13.1-1_all.deb ... Unpacking dh-strip-nondeterminism (1.13.1-1) ... Selecting previously unselected package libelf1:amd64. Preparing to unpack .../073-libelf1_0.188-2.1_amd64.deb ... Unpacking libelf1:amd64 (0.188-2.1) ... Selecting previously unselected package dwz. Preparing to unpack .../074-dwz_0.15-1_amd64.deb ... Unpacking dwz (0.15-1) ... Selecting previously unselected package gettext. Preparing to unpack .../075-gettext_0.21-12_amd64.deb ... Unpacking gettext (0.21-12) ... Selecting previously unselected package intltool-debian. Preparing to unpack .../076-intltool-debian_0.35.0+20060710.6_all.deb ... Unpacking intltool-debian (0.35.0+20060710.6) ... Selecting previously unselected package po-debconf. Preparing to unpack .../077-po-debconf_1.0.21+nmu1_all.deb ... Unpacking po-debconf (1.0.21+nmu1) ... Selecting previously unselected package debhelper. Preparing to unpack .../078-debhelper_13.11.4_all.deb ... Unpacking debhelper (13.11.4) ... Selecting previously unselected package sgml-data. Preparing to unpack .../079-sgml-data_2.0.11+nmu1_all.deb ... Unpacking sgml-data (2.0.11+nmu1) ... Selecting previously unselected package docbook-xml. Preparing to unpack .../080-docbook-xml_4.5-12_all.deb ... Unpacking docbook-xml (4.5-12) ... Selecting previously unselected package gcc-11-base:arm64. Preparing to unpack .../081-gcc-11-base_11.3.0-13_arm64.deb ... Unpacking gcc-11-base:arm64 (11.3.0-13) ... Selecting previously unselected package gcc-12-base:arm64. Preparing to unpack .../082-gcc-12-base_12.2.0-14_arm64.deb ... Unpacking gcc-12-base:arm64 (12.2.0-14) ... Selecting previously unselected package libgcc-s1:arm64. Preparing to unpack .../083-libgcc-s1_12.2.0-14_arm64.deb ... Unpacking libgcc-s1:arm64 (12.2.0-14) ... Selecting previously unselected package libc6:arm64. Preparing to unpack .../084-libc6_2.36-9_arm64.deb ... Unpacking libc6:arm64 (2.36-9) ... Selecting previously unselected package libasan6:arm64. Preparing to unpack .../085-libasan6_11.3.0-13_arm64.deb ... Unpacking libasan6:arm64 (11.3.0-13) ... Selecting previously unselected package libatomic1:arm64. Preparing to unpack .../086-libatomic1_12.2.0-14_arm64.deb ... Unpacking libatomic1:arm64 (12.2.0-14) ... Selecting previously unselected package linux-libc-dev:arm64. Preparing to unpack .../087-linux-libc-dev_6.1.27-1_arm64.deb ... Unpacking linux-libc-dev:arm64 (6.1.27-1) ... Selecting previously unselected package libcrypt1:arm64. Preparing to unpack .../088-libcrypt1_1%3a4.4.33-2_arm64.deb ... Unpacking libcrypt1:arm64 (1:4.4.33-2) ... Selecting previously unselected package libcrypt-dev:arm64. Preparing to unpack .../089-libcrypt-dev_1%3a4.4.33-2_arm64.deb ... Unpacking libcrypt-dev:arm64 (1:4.4.33-2) ... Selecting previously unselected package libcom-err2:arm64. Preparing to unpack .../090-libcom-err2_1.47.0-2_arm64.deb ... Unpacking libcom-err2:arm64 (1.47.0-2) ... Selecting previously unselected package libkrb5support0:arm64. Preparing to unpack .../091-libkrb5support0_1.20.1-1+b1_arm64.deb ... Unpacking libkrb5support0:arm64 (1.20.1-1+b1) ... Selecting previously unselected package libk5crypto3:arm64. Preparing to unpack .../092-libk5crypto3_1.20.1-1+b1_arm64.deb ... Unpacking libk5crypto3:arm64 (1.20.1-1+b1) ... Selecting previously unselected package libkeyutils1:arm64. Preparing to unpack .../093-libkeyutils1_1.6.3-2_arm64.deb ... Unpacking libkeyutils1:arm64 (1.6.3-2) ... Selecting previously unselected package libssl3:arm64. Preparing to unpack .../094-libssl3_3.0.8-1_arm64.deb ... Unpacking libssl3:arm64 (3.0.8-1) ... Selecting previously unselected package libkrb5-3:arm64. Preparing to unpack .../095-libkrb5-3_1.20.1-1+b1_arm64.deb ... Unpacking libkrb5-3:arm64 (1.20.1-1+b1) ... Selecting previously unselected package libgssapi-krb5-2:arm64. Preparing to unpack .../096-libgssapi-krb5-2_1.20.1-1+b1_arm64.deb ... Unpacking libgssapi-krb5-2:arm64 (1.20.1-1+b1) ... Selecting previously unselected package libtirpc3:arm64. Preparing to unpack .../097-libtirpc3_1.3.3+ds-1_arm64.deb ... Unpacking libtirpc3:arm64 (1.3.3+ds-1) ... Selecting previously unselected package libnsl2:arm64. Preparing to unpack .../098-libnsl2_1.3.0-2_arm64.deb ... Unpacking libnsl2:arm64 (1.3.0-2) ... Selecting previously unselected package libtirpc-dev:arm64. Preparing to unpack .../099-libtirpc-dev_1.3.3+ds-1_arm64.deb ... Unpacking libtirpc-dev:arm64 (1.3.3+ds-1) ... Selecting previously unselected package libnsl-dev:arm64. Preparing to unpack .../100-libnsl-dev_1.3.0-2_arm64.deb ... Unpacking libnsl-dev:arm64 (1.3.0-2) ... Selecting previously unselected package libc6-dev:arm64. Preparing to unpack .../101-libc6-dev_2.36-9_arm64.deb ... Unpacking libc6-dev:arm64 (2.36-9) ... Selecting previously unselected package libgomp1:arm64. Preparing to unpack .../102-libgomp1_12.2.0-14_arm64.deb ... Unpacking libgomp1:arm64 (12.2.0-14) ... Selecting previously unselected package libitm1:arm64. Preparing to unpack .../103-libitm1_12.2.0-14_arm64.deb ... Unpacking libitm1:arm64 (12.2.0-14) ... Selecting previously unselected package liblsan0:arm64. Preparing to unpack .../104-liblsan0_12.2.0-14_arm64.deb ... Unpacking liblsan0:arm64 (12.2.0-14) ... Selecting previously unselected package libtsan0:arm64. Preparing to unpack .../105-libtsan0_11.3.0-13_arm64.deb ... Unpacking libtsan0:arm64 (11.3.0-13) ... Selecting previously unselected package libstdc++6:arm64. Preparing to unpack .../106-libstdc++6_12.2.0-14_arm64.deb ... Unpacking libstdc++6:arm64 (12.2.0-14) ... Selecting previously unselected package libubsan1:arm64. Preparing to unpack .../107-libubsan1_12.2.0-14_arm64.deb ... Unpacking libubsan1:arm64 (12.2.0-14) ... Selecting previously unselected package libhwasan0:arm64. Preparing to unpack .../108-libhwasan0_12.2.0-14_arm64.deb ... Unpacking libhwasan0:arm64 (12.2.0-14) ... Selecting previously unselected package libgcc-11-dev:arm64. Preparing to unpack .../109-libgcc-11-dev_11.3.0-13_arm64.deb ... Unpacking libgcc-11-dev:arm64 (11.3.0-13) ... Selecting previously unselected package libpkgconf3:amd64. Preparing to unpack .../110-libpkgconf3_1.8.1-1_amd64.deb ... Unpacking libpkgconf3:amd64 (1.8.1-1) ... Selecting previously unselected package zlib1g:arm64. Preparing to unpack .../111-zlib1g_1%3a1.2.13.dfsg-1_arm64.deb ... Unpacking zlib1g:arm64 (1:1.2.13.dfsg-1) ... Selecting previously unselected package libpng16-16:arm64. Preparing to unpack .../112-libpng16-16_1.6.39-2_arm64.deb ... Unpacking libpng16-16:arm64 (1.6.39-2) ... Selecting previously unselected package zlib1g-dev:arm64. Preparing to unpack .../113-zlib1g-dev_1%3a1.2.13.dfsg-1_arm64.deb ... Unpacking zlib1g-dev:arm64 (1:1.2.13.dfsg-1) ... Selecting previously unselected package libpng-dev:arm64. Preparing to unpack .../114-libpng-dev_1.6.39-2_arm64.deb ... Unpacking libpng-dev:arm64 (1.6.39-2) ... Selecting previously unselected package libstdc++-11-dev:arm64. Preparing to unpack .../115-libstdc++-11-dev_11.3.0-13_arm64.deb ... Unpacking libstdc++-11-dev:arm64 (11.3.0-13) ... Selecting previously unselected package pkgconf-bin. Preparing to unpack .../116-pkgconf-bin_1.8.1-1_amd64.deb ... Unpacking pkgconf-bin (1.8.1-1) ... Selecting previously unselected package pkgconf:arm64. Preparing to unpack .../117-pkgconf_1.8.1-1_arm64.deb ... Unpacking pkgconf:arm64 (1.8.1-1) ... Selecting previously unselected package pkg-config:arm64. Preparing to unpack .../118-pkg-config_1.8.1-1_arm64.deb ... Unpacking pkg-config:arm64 (1.8.1-1) ... Selecting previously unselected package xmlto. Preparing to unpack .../119-xmlto_0.0.28-2.1_amd64.deb ... Unpacking xmlto (0.0.28-2.1) ... Selecting previously unselected package sbuild-build-depends-main-dummy:arm64. Preparing to unpack .../120-sbuild-build-depends-main-dummy_0.invalid.0_arm64.deb ... Unpacking sbuild-build-depends-main-dummy:arm64 (0.invalid.0) ... Setting up libconfig-inifiles-perl (3.000003-2) ... Setting up media-types (10.0.0) ... Setting up libpipeline1:amd64 (1.5.7-1) ... Setting up gcc-11-base:arm64 (11.3.0-13) ... Setting up libfile-which-perl (1.27-2) ... Setting up libicu72:amd64 (72.1-3) ... Setting up gcc-12-cross-base (12.2.0-14cross1) ... Setting up bsdextrautils (2.38.1-5+b1) ... Setting up libmagic-mgc (1:5.44-3) ... Setting up gcc-12-aarch64-linux-gnu-base:amd64 (12.2.0-14cross1) ... Setting up libarchive-zip-perl (1.68-1) ... Setting up libdebhelper-perl (13.11.4) ... Setting up libsqlite3-0:amd64 (3.40.1-2) ... Setting up libmagic1:amd64 (1:5.44-3) ... Setting up linux-libc-dev:arm64 (6.1.27-1) ... Setting up libxml-namespacesupport-perl (1.12-2) ... Setting up gettext-base (0.21-12) ... Setting up m4 (1.4.19-3) ... Setting up binutils-aarch64-linux-gnu (2.40-2) ... Setting up file (1:5.44-3) ... Setting up libyaml-perl (1.30-2) ... Setting up gcc-12-base:arm64 (12.2.0-14) ... Setting up libxml-sax-base-perl (1.09-3) ... Setting up libio-string-perl (1.08-4) ... Setting up autotools-dev (20220109.1) ... Setting up cross-config (2.6.20) ... Setting up libpkgconf3:amd64 (1.8.1-1) ... Setting up libc6-arm64-cross (2.36-8cross1) ... Setting up autopoint (0.21-12) ... Setting up libitm1-arm64-cross (12.2.0-14cross1) ... Setting up pkgconf-bin (1.8.1-1) ... Setting up libncursesw6:amd64 (6.4-4) ... Setting up autoconf (2.71-3) ... Setting up linux-libc-dev-arm64-cross (6.1.4-1cross1) ... Setting up sensible-utils (0.0.17+nmu1) ... Setting up libuchardet0:amd64 (0.0.7-1) ... Setting up libsub-override-perl (0.09-4) ... Setting up sgml-base (1.31) ... Setting up libfile-homedir-perl (1.006-2) ... Setting up libelf1:amd64 (0.188-2.1) ... Setting up readline-common (8.2-1.3) ... Setting up libxml2:amd64 (2.9.14+dfsg-1.2) ... Setting up liblocale-gettext-perl (1.07-5) ... Setting up libgcc-s1-arm64-cross (12.2.0-14cross1) ... Setting up libatomic1-arm64-cross (12.2.0-14cross1) ... Setting up automake (1:1.16.5-1.3) ... update-alternatives: using /usr/bin/automake-1.16 to provide /usr/bin/automake (automake) in auto mode Setting up libfile-stripnondeterminism-perl (1.13.1-1) ... Setting up liblsan0-arm64-cross (12.2.0-14cross1) ... Setting up libgomp1-arm64-cross (12.2.0-14cross1) ... Setting up gettext (0.21-12) ... Setting up cpp-12-aarch64-linux-gnu (12.2.0-14cross1) ... Setting up libtool (2.4.7-5) ... Setting up libreadline8:amd64 (8.2-1.3) ... Setting up libhwasan0-arm64-cross (12.2.0-14cross1) ... Setting up libc6-dev-arm64-cross (2.36-8cross1) ... Setting up pkgconf:arm64 (1.8.1-1) ... Setting up intltool-debian (0.35.0+20060710.6) ... Setting up libstdc++6-arm64-cross (12.2.0-14cross1) ... Setting up dh-autoreconf (20) ... Setting up cpp-aarch64-linux-gnu (4:12.2.0-3) ... Setting up pkg-config:arm64 (1.8.1-1) ... Setting up ucf (3.0043+nmu1) ... Setting up dh-strip-nondeterminism (1.13.1-1) ... Setting up dwz (0.15-1) ... Setting up groff-base (1.22.4-10) ... Setting up xml-core (0.18+nmu1) ... Setting up libxslt1.1:amd64 (1.1.35-1) ... Setting up libasan8-arm64-cross (12.2.0-14cross1) ... Setting up libxml2-utils (2.9.14+dfsg-1.2) ... Setting up libtsan2-arm64-cross (12.2.0-14cross1) ... Setting up libubsan1-arm64-cross (12.2.0-14cross1) ... Setting up po-debconf (1.0.21+nmu1) ... Setting up libpython3.11-stdlib:amd64 (3.11.2-6) ... Setting up xsltproc (1.1.35-1) ... Setting up man-db (2.11.2-2) ... Not building database; man-db/auto-update is not 'true'. Setting up libxml-sax-perl (1.02+dfsg-3) ... update-perl-sax-parsers: Registering Perl SAX parser XML::SAX::PurePerl with priority 10... update-perl-sax-parsers: Updating overall Perl SAX parser modules info file... Creating config file /etc/perl/XML/SAX/ParserDetails.ini with new version Setting up libgcc-12-dev-arm64-cross (12.2.0-14cross1) ... Setting up gcc-12-aarch64-linux-gnu (12.2.0-14cross1) ... Setting up libxml-libxml-perl (2.0207+dfsg+really+2.0134-1+b1) ... update-perl-sax-parsers: Registering Perl SAX parser XML::LibXML::SAX::Parser with priority 50... update-perl-sax-parsers: Registering Perl SAX parser XML::LibXML::SAX with priority 50... update-perl-sax-parsers: Updating overall Perl SAX parser modules info file... Replacing config file /etc/perl/XML/SAX/ParserDetails.ini with new version Setting up libpython3-stdlib:amd64 (3.11.2-1+b1) ... Setting up gcc-aarch64-linux-gnu (4:12.2.0-3) ... Setting up python3.11 (3.11.2-6) ... Setting up debhelper (13.11.4) ... Setting up python3 (3.11.2-1+b1) ... Setting up libstdc++-12-dev-arm64-cross (12.2.0-14cross1) ... Setting up asciidoc-common (10.2.0-1) ... Setting up libxml-simple-perl (2.25-2) ... Setting up g++-12-aarch64-linux-gnu (12.2.0-14cross1) ... Setting up libconfig-auto-perl (0.44-2) ... Setting up g++-aarch64-linux-gnu (4:12.2.0-3) ... Setting up libdebian-dpkgcross-perl (2.6.20) ... Setting up dpkg-cross (2.6.20) ... Setting up crossbuild-essential-arm64 (12.9) ... Setting up libgcc-s1:arm64 (12.2.0-14) ... Setting up libc6:arm64 (2.36-9) ... Setting up libhwasan0:arm64 (12.2.0-14) ... Setting up libstdc++6:arm64 (12.2.0-14) ... Setting up liblsan0:arm64 (12.2.0-14) ... Setting up libitm1:arm64 (12.2.0-14) ... Setting up libtsan0:arm64 (11.3.0-13) ... Setting up libkeyutils1:arm64 (1.6.3-2) ... Setting up libssl3:arm64 (3.0.8-1) ... Setting up zlib1g:arm64 (1:1.2.13.dfsg-1) ... Setting up libcrypt1:arm64 (1:4.4.33-2) ... Setting up libcom-err2:arm64 (1.47.0-2) ... Setting up libgomp1:arm64 (12.2.0-14) ... Setting up libasan6:arm64 (11.3.0-13) ... Setting up libkrb5support0:arm64 (1.20.1-1+b1) ... Setting up libpng16-16:arm64 (1.6.39-2) ... Setting up libatomic1:arm64 (12.2.0-14) ... Setting up libk5crypto3:arm64 (1.20.1-1+b1) ... Setting up libubsan1:arm64 (12.2.0-14) ... Setting up libgcc-11-dev:arm64 (11.3.0-13) ... Setting up libcrypt-dev:arm64 (1:4.4.33-2) ... Setting up libkrb5-3:arm64 (1.20.1-1+b1) ... Setting up libgssapi-krb5-2:arm64 (1.20.1-1+b1) ... Setting up libtirpc3:arm64 (1.3.3+ds-1) ... Setting up libtirpc-dev:arm64 (1.3.3+ds-1) ... Setting up libnsl2:arm64 (1.3.0-2) ... Setting up libnsl-dev:arm64 (1.3.0-2) ... Setting up libc6-dev:arm64 (2.36-9) ... Setting up libstdc++-11-dev:arm64 (11.3.0-13) ... Setting up zlib1g-dev:arm64 (1:1.2.13.dfsg-1) ... Setting up libpng-dev:arm64 (1.6.39-2) ... Processing triggers for libc-bin (2.36-9) ... Processing triggers for sgml-base (1.31) ... Setting up docbook-xsl (1.79.2+dfsg-2) ... Setting up sgml-data (2.0.11+nmu1) ... Setting up asciidoc-base (10.2.0-1) ... Processing triggers for sgml-base (1.31) ... Setting up docbook-xml (4.5-12) ... Processing triggers for sgml-base (1.31) ... Setting up xmlto (0.0.28-2.1) ... Setting up sbuild-build-depends-main-dummy:arm64 (0.invalid.0) ... +------------------------------------------------------------------------------+ | Check architectures | +------------------------------------------------------------------------------+ Arch check ok (arm64 included in any) +------------------------------------------------------------------------------+ | Build environment | +------------------------------------------------------------------------------+ Kernel: Linux 5.10.0-21-amd64 #1 SMP Debian 5.10.162-1 (2023-01-21) amd64 (x86_64) Toolchain package versions: binutils_2.40-2 dpkg-dev_1.21.21 g++-11_11.3.0-13 g++-12_12.2.0-14 gcc-11_11.3.0-13 gcc-12_12.2.0-14 libc6-dev_2.36-9 libstdc++-11-dev_11.3.0-13 libstdc++-12-dev_12.2.0-14 libstdc++-12-dev-arm64-cross_12.2.0-14cross1 libstdc++6_12.2.0-14 libstdc++6-arm64-cross_12.2.0-14cross1 linux-libc-dev_6.1.27-1 Package versions: adduser_3.132 apt_2.6.0 asciidoc-base_10.2.0-1 asciidoc-common_10.2.0-1 autoconf_2.71-3 automake_1:1.16.5-1.3 autopoint_0.21-12 autotools-dev_20220109.1 base-files_12.4 base-passwd_3.6.1 bash_5.2.15-2+b2 binutils_2.40-2 binutils-aarch64-linux-gnu_2.40-2 binutils-common_2.40-2 binutils-x86-64-linux-gnu_2.40-2 bsdextrautils_2.38.1-5+b1 bsdutils_1:2.38.1-5+b1 build-essential_12.9 bzip2_1.0.8-5+b1 coreutils_9.1-1 cpp_4:12.2.0-3 cpp-11_11.3.0-13 cpp-12_12.2.0-14 cpp-12-aarch64-linux-gnu_12.2.0-14cross1 cpp-aarch64-linux-gnu_4:12.2.0-3 cross-config_2.6.20 crossbuild-essential-arm64_12.9 dash_0.5.12-2 debconf_1.5.82 debhelper_13.11.4 debian-archive-keyring_2023.3 debianutils_5.7-0.4 dh-autoreconf_20 dh-strip-nondeterminism_1.13.1-1 diffutils_1:3.8-4 docbook-xml_4.5-12 docbook-xsl_1.79.2+dfsg-2 dpkg_1.21.21 dpkg-cross_2.6.20 dpkg-dev_1.21.21 dwz_0.15-1 e2fsprogs_1.47.0-2 fakeroot_1.31-1.2 file_1:5.44-3 findutils_4.9.0-4 g++_4:12.2.0-3 g++-11_11.3.0-13 g++-12_12.2.0-14 g++-12-aarch64-linux-gnu_12.2.0-14cross1 g++-aarch64-linux-gnu_4:12.2.0-3 gcc_4:12.2.0-3 gcc-11_11.3.0-13 gcc-11-base_11.3.0-13 gcc-12_12.2.0-14 gcc-12-aarch64-linux-gnu_12.2.0-14cross1 gcc-12-aarch64-linux-gnu-base_12.2.0-14cross1 gcc-12-base_12.2.0-14 gcc-12-cross-base_12.2.0-14cross1 gcc-9-base_9.5.0-3 gcc-aarch64-linux-gnu_4:12.2.0-3 gettext_0.21-12 gettext-base_0.21-12 gpgv_2.2.40-1.1 grep_3.8-5 groff-base_1.22.4-10 gzip_1.12-1 hostname_3.23+nmu1 init-system-helpers_1.65.2 intltool-debian_0.35.0+20060710.6 libacl1_2.3.1-3 libapt-pkg6.0_2.6.0 libarchive-zip-perl_1.68-1 libasan6_11.3.0-13 libasan8_12.2.0-14 libasan8-arm64-cross_12.2.0-14cross1 libatomic1_12.2.0-14 libatomic1-arm64-cross_12.2.0-14cross1 libattr1_1:2.5.1-4 libaudit-common_1:3.0.9-1 libaudit1_1:3.0.9-1 libbinutils_2.40-2 libblkid1_2.38.1-5+b1 libbz2-1.0_1.0.8-5+b1 libc-bin_2.36-9 libc-dev-bin_2.36-9 libc6_2.36-9 libc6-arm64-cross_2.36-8cross1 libc6-dev_2.36-9 libc6-dev-arm64-cross_2.36-8cross1 libcap-ng0_0.8.3-1+b3 libcap2_1:2.66-3 libcc1-0_12.2.0-14 libcom-err2_1.47.0-2 libconfig-auto-perl_0.44-2 libconfig-inifiles-perl_3.000003-2 libcrypt-dev_1:4.4.33-2 libcrypt1_1:4.4.33-2 libctf-nobfd0_2.40-2 libctf0_2.40-2 libdb5.3_5.3.28+dfsg2-1 libdebconfclient0_0.269 libdebhelper-perl_13.11.4 libdebian-dpkgcross-perl_2.6.20 libdpkg-perl_1.21.21 libelf1_0.188-2.1 libexpat1_2.5.0-1 libext2fs2_1.47.0-2 libfakeroot_1.31-1.2 libffi8_3.4.4-1 libfile-find-rule-perl_0.34-3 libfile-homedir-perl_1.006-2 libfile-stripnondeterminism-perl_1.13.1-1 libfile-which-perl_1.27-2 libgcc-11-dev_11.3.0-13 libgcc-12-dev_12.2.0-14 libgcc-12-dev-arm64-cross_12.2.0-14cross1 libgcc-s1_12.2.0-14 libgcc-s1-arm64-cross_12.2.0-14cross1 libgcrypt20_1.10.1-3 libgdbm-compat4_1.23-3 libgdbm6_1.23-3 libgmp10_2:6.2.1+dfsg1-1.1 libgnutls30_3.7.9-2 libgomp1_12.2.0-14 libgomp1-arm64-cross_12.2.0-14cross1 libgpg-error0_1.46-1 libgprofng0_2.40-2 libgssapi-krb5-2_1.20.1-1+b1 libhogweed6_3.8.1-2 libhwasan0_12.2.0-14 libhwasan0-arm64-cross_12.2.0-14cross1 libicu72_72.1-3 libidn2-0_2.3.3-1+b1 libio-string-perl_1.08-4 libisl23_0.25-1 libitm1_12.2.0-14 libitm1-arm64-cross_12.2.0-14cross1 libjansson4_2.14-2 libk5crypto3_1.20.1-1+b1 libkeyutils1_1.6.3-2 libkrb5-3_1.20.1-1+b1 libkrb5support0_1.20.1-1+b1 liblocale-gettext-perl_1.07-5 liblsan0_12.2.0-14 liblsan0-arm64-cross_12.2.0-14cross1 liblz4-1_1.9.4-1 liblzma5_5.4.1-0.2 libmagic-mgc_1:5.44-3 libmagic1_1:5.44-3 libmd0_1.0.4-2 libmount1_2.38.1-5+b1 libmpc3_1.3.1-1 libmpfr6_4.2.0-1 libncursesw6_6.4-4 libnettle8_3.8.1-2 libnsl-dev_1.3.0-2 libnsl2_1.3.0-2 libnumber-compare-perl_0.03-3 libp11-kit0_0.24.1-2 libpam-modules_1.5.2-6 libpam-modules-bin_1.5.2-6 libpam-runtime_1.5.2-6 libpam0g_1.5.2-6 libpcre2-8-0_10.42-1 libpcre3_2:8.39-15 libperl5.34_5.34.0-5 libperl5.36_5.36.0-7 libpipeline1_1.5.7-1 libpkgconf3_1.8.1-1 libpng-dev_1.6.39-2 libpng16-16_1.6.39-2 libpython3-stdlib_3.11.2-1+b1 libpython3.11-minimal_3.11.2-6 libpython3.11-stdlib_3.11.2-6 libquadmath0_12.2.0-14 libreadline8_8.2-1.3 libseccomp2_2.5.4-1+b3 libselinux1_3.4-1+b5 libsemanage-common_3.4-1 libsemanage2_3.4-1+b5 libsepol2_3.4-2 libsmartcols1_2.38.1-5+b1 libsqlite3-0_3.40.1-2 libss2_1.47.0-2 libssl3_3.0.8-1 libstdc++-11-dev_11.3.0-13 libstdc++-12-dev_12.2.0-14 libstdc++-12-dev-arm64-cross_12.2.0-14cross1 libstdc++6_12.2.0-14 libstdc++6-arm64-cross_12.2.0-14cross1 libsub-override-perl_0.09-4 libsystemd0_252.6-1 libtasn1-6_4.19.0-2 libtext-glob-perl_0.11-3 libtinfo6_6.4-4 libtirpc-common_1.3.3+ds-1 libtirpc-dev_1.3.3+ds-1 libtirpc3_1.3.3+ds-1 libtool_2.4.7-5 libtsan0_11.3.0-13 libtsan2_12.2.0-14 libtsan2-arm64-cross_12.2.0-14cross1 libubsan1_12.2.0-14 libubsan1-arm64-cross_12.2.0-14cross1 libuchardet0_0.0.7-1 libudev1_252.6-1 libunistring2_1.0-2 libuuid1_2.38.1-5+b1 libxml-libxml-perl_2.0207+dfsg+really+2.0134-1+b1 libxml-namespacesupport-perl_1.12-2 libxml-sax-base-perl_1.09-3 libxml-sax-perl_1.02+dfsg-3 libxml-simple-perl_2.25-2 libxml2_2.9.14+dfsg-1.2 libxml2-utils_2.9.14+dfsg-1.2 libxslt1.1_1.1.35-1 libxxhash0_0.8.1-1 libyaml-perl_1.30-2 libzstd1_1.5.4+dfsg2-5 linux-libc-dev_6.1.27-1 linux-libc-dev-arm64-cross_6.1.4-1cross1 login_1:4.13+dfsg1-1+b1 logsave_1.47.0-2 m4_1.4.19-3 make_4.3-4.1 man-db_2.11.2-2 mawk_1.3.4.20200120-3.1 media-types_10.0.0 mount_2.38.1-5+b1 ncurses-base_6.4-4 ncurses-bin_6.4-4 passwd_1:4.13+dfsg1-1+b1 patch_2.7.6-7 perl_5.36.0-7 perl-base_5.36.0-7 perl-modules-5.34_5.34.0-5 perl-modules-5.36_5.36.0-7 pkg-config_1.8.1-1 pkgconf_1.8.1-1 pkgconf-bin_1.8.1-1 po-debconf_1.0.21+nmu1 python3_3.11.2-1+b1 python3-minimal_3.11.2-1+b1 python3.11_3.11.2-6 python3.11-minimal_3.11.2-6 readline-common_8.2-1.3 rpcsvc-proto_1.4.3-1 sbuild-build-depends-main-dummy_0.invalid.0 sed_4.9-1 sensible-utils_0.0.17+nmu1 sgml-base_1.31 sgml-data_2.0.11+nmu1 sysvinit-utils_3.06-4 tar_1.34+dfsg-1.2 tzdata_2023c-4 ucf_3.0043+nmu1 usrmerge_35 util-linux_2.38.1-5+b1 util-linux-extra_2.38.1-5+b1 xml-core_0.18+nmu1 xmlto_0.0.28-2.1 xsltproc_1.1.35-1 xz-utils_5.4.1-0.2 zlib1g_1:1.2.13.dfsg-1 zlib1g-dev_1:1.2.13.dfsg-1 +------------------------------------------------------------------------------+ | Build | +------------------------------------------------------------------------------+ Unpack source ------------- -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA512 Format: 3.0 (quilt) Source: guetzli Binary: guetzli Architecture: any Version: 1.0.1-1 Maintainer: Debian PhotoTools Maintainers Uploaders: ChangZhuo Chen (陳昌倬) Homepage: https://github.com/google/guetzli Standards-Version: 3.9.8 Vcs-Browser: https://anonscm.debian.org/git/pkg-phototools/guetzli.git Vcs-Git: https://anonscm.debian.org/git/pkg-phototools/guetzli.git Build-Depends: debhelper (>= 10), asciidoc-base, libpng-dev, pkg-config, xmlto Package-List: guetzli deb graphics optional arch=any Checksums-Sha1: afead6c93028521e3f336097f3547d20c17cefa5 97251 guetzli_1.0.1.orig.tar.gz 6143f37c0accaca6ce8985fcca327b2d65830e49 2320 guetzli_1.0.1-1.debian.tar.xz Checksums-Sha256: e52eb417a5c0fb5a3b08a858c8d10fa797627ada5373e203c196162d6a313697 97251 guetzli_1.0.1.orig.tar.gz 536b302d2d359bb81517da5dbc46d047cb9120f1bb931d8480b7a71cf0a9099c 2320 guetzli_1.0.1-1.debian.tar.xz Files: 942396efe07cab84532f12060a31894b 97251 guetzli_1.0.1.orig.tar.gz 75cbe8bac1cc62f6c2bdcee9b8837194 2320 guetzli_1.0.1-1.debian.tar.xz -----BEGIN PGP SIGNATURE----- iQIzBAEBCgAdFiEEE5H9tOJ8ReWWaF1PGrc2MXdaTaQFAljSpLMACgkQGrc2MXda TaRZeRAAt+WL2jmmkB3R+lhAlIIlBU4sitXBVaoKHsUHO63dj/0o6+0dh9PsfNkW pXlNjhpPMrnnrZnBg2f0VABKoIYFxqKnozQzsOJW1U93xAuY5GPENqDtU7AWajGl cZ/6ZhtIuvAtzdq+oG5qqiQfdN8auRIy0cc2P8+5+rsHmlwHUX8nXIhlOvkQsi6B WWYskEGCe3HMOqkNM8SqS0s/+P3sIXHgBTqHLHd4a9PQQHTNHlNI4wx0pCtRNjQf I0+D8Ls1lu6hbil1uJrk0JEvkNkpPWIkVYs4ywWsWYtJBQv2zOofaHFq9Iqy1yFJ 1YEWhGwbANa+17bJTrXik8u2wt8UPmh4EXAToqGILfCM33PrMnxQGM8L3G7JA8HF OxQKzaCbjQmOPPOfV/HOiMuLS8R2Xn/f5PYb1C0UVAB4RSezeuXeLGWyZpsPl/OS asy7eX4PwvULaTCFLmdiuwiMO4qMziKW3mERMF6TPOIG816L/rwJY+vBARcZXqtK XdecruyjZ4T2zEKFU3eJpX95TkPSAqeB6gfilEj+a3kKCmiRbxvaU+/PoCyf3AQv TwqUs58X2rmKekkQif3Iaggs572/unlas2f7Cu7fXkgq41mOl8EBbgIfybEWuttT v9MwzFzUEoV330S2PsgvYv8N/I7oipR6tasj8pJpCGN2seeQMl8= =vAFz -----END PGP SIGNATURE----- gpgv: Signature made Wed Mar 22 16:22:11 2017 UTC gpgv: using RSA key 1391FDB4E27C45E596685D4F1AB73631775A4DA4 gpgv: Can't check signature: No public key dpkg-source: warning: cannot verify inline signature for ./guetzli_1.0.1-1.dsc: no acceptable signature found dpkg-source: info: extracting guetzli in /<> dpkg-source: info: unpacking guetzli_1.0.1.orig.tar.gz dpkg-source: info: unpacking guetzli_1.0.1-1.debian.tar.xz Check disk space ---------------- Sufficient free space for build User Environment ---------------- APT_CONFIG=/var/lib/sbuild/apt.conf CONFIG_SITE=/etc/dpkg-cross/cross-config.arm64 DEB_BUILD_OPTIONS=nocheck HOME=/sbuild-nonexistent LANG=en_US.UTF-8 LC_ALL=C.UTF-8 LOGNAME=crossqa PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games SCHROOT_ALIAS_NAME=unstable-amd64-sbuild SCHROOT_CHROOT_NAME=sid-amd64-sbuild SCHROOT_COMMAND=env SCHROOT_GID=1000 SCHROOT_GROUP=crossqa SCHROOT_SESSION_ID=sid-amd64-sbuild-c85feac3-ab63-48f0-b0b2-59ed2e772399 SCHROOT_UID=1000 SCHROOT_USER=crossqa SHELL=/bin/sh USER=crossqa dpkg-buildpackage ----------------- Command: dpkg-buildpackage --sanitize-env -aarm64 -Pcross,nocheck -us -uc -B -rfakeroot --jobs-try=1 dpkg-buildpackage: info: source package guetzli dpkg-buildpackage: info: source version 1.0.1-1 dpkg-buildpackage: info: source distribution unstable dpkg-buildpackage: info: source changed by ChangZhuo Chen (陳昌倬) dpkg-architecture: warning: specified GNU system type aarch64-linux-gnu does not match CC system type x86_64-linux-gnu, try setting a correct CC environment variable dpkg-source --before-build . dpkg-buildpackage: info: host architecture arm64 fakeroot debian/rules clean dh clean dh_auto_clean make -j1 clean make[1]: Entering directory '/<>' Cleaning guetzli make[1]: Leaving directory '/<>' dh_clean debian/rules build-arch dh build-arch dh_update_autotools_config -a dh_autoreconf -a debian/rules override_dh_auto_configure make[1]: Entering directory '/<>' cat debian/*manpages | sed 's/$/.txt/p' | xargs -n 1 a2x --doctype manpage --format manpage dh_auto_configure make[1]: Leaving directory '/<>' dh_auto_build -a make -j1 PKG_CONFIG=aarch64-linux-gnu-pkg-config CXX=aarch64-linux-gnu-g\+\+ CC=aarch64-linux-gnu-gcc make[1]: Entering directory '/<>' ==== Building guetzli (release) ==== Creating bin/Release Creating obj/Release butteraugli_comparator.cc Package libpng was not found in the pkg-config search path. Perhaps you should add the directory containing `libpng.pc' to the PKG_CONFIG_PATH environment variable Package 'libpng', required by 'virtual:world', not found dct_double.cc Package libpng was not found in the pkg-config search path. Perhaps you should add the directory containing `libpng.pc' to the PKG_CONFIG_PATH environment variable Package 'libpng', required by 'virtual:world', not found debug_print.cc Package libpng was not found in the pkg-config search path. Perhaps you should add the directory containing `libpng.pc' to the PKG_CONFIG_PATH environment variable Package 'libpng', required by 'virtual:world', not found entropy_encode.cc Package libpng was not found in the pkg-config search path. Perhaps you should add the directory containing `libpng.pc' to the PKG_CONFIG_PATH environment variable Package 'libpng', required by 'virtual:world', not found fdct.cc Package libpng was not found in the pkg-config search path. Perhaps you should add the directory containing `libpng.pc' to the PKG_CONFIG_PATH environment variable Package 'libpng', required by 'virtual:world', not found gamma_correct.cc Package libpng was not found in the pkg-config search path. Perhaps you should add the directory containing `libpng.pc' to the PKG_CONFIG_PATH environment variable Package 'libpng', required by 'virtual:world', not found guetzli.cc Package libpng was not found in the pkg-config search path. Perhaps you should add the directory containing `libpng.pc' to the PKG_CONFIG_PATH environment variable Package 'libpng', required by 'virtual:world', not found idct.cc Package libpng was not found in the pkg-config search path. Perhaps you should add the directory containing `libpng.pc' to the PKG_CONFIG_PATH environment variable Package 'libpng', required by 'virtual:world', not found jpeg_data.cc Package libpng was not found in the pkg-config search path. Perhaps you should add the directory containing `libpng.pc' to the PKG_CONFIG_PATH environment variable Package 'libpng', required by 'virtual:world', not found jpeg_data_decoder.cc Package libpng was not found in the pkg-config search path. Perhaps you should add the directory containing `libpng.pc' to the PKG_CONFIG_PATH environment variable Package 'libpng', required by 'virtual:world', not found jpeg_data_encoder.cc Package libpng was not found in the pkg-config search path. Perhaps you should add the directory containing `libpng.pc' to the PKG_CONFIG_PATH environment variable Package 'libpng', required by 'virtual:world', not found jpeg_data_reader.cc Package libpng was not found in the pkg-config search path. Perhaps you should add the directory containing `libpng.pc' to the PKG_CONFIG_PATH environment variable Package 'libpng', required by 'virtual:world', not found jpeg_data_writer.cc Package libpng was not found in the pkg-config search path. Perhaps you should add the directory containing `libpng.pc' to the PKG_CONFIG_PATH environment variable Package 'libpng', required by 'virtual:world', not found jpeg_huffman_decode.cc Package libpng was not found in the pkg-config search path. Perhaps you should add the directory containing `libpng.pc' to the PKG_CONFIG_PATH environment variable Package 'libpng', required by 'virtual:world', not found output_image.cc Package libpng was not found in the pkg-config search path. Perhaps you should add the directory containing `libpng.pc' to the PKG_CONFIG_PATH environment variable Package 'libpng', required by 'virtual:world', not found preprocess_downsample.cc Package libpng was not found in the pkg-config search path. Perhaps you should add the directory containing `libpng.pc' to the PKG_CONFIG_PATH environment variable Package 'libpng', required by 'virtual:world', not found processor.cc Package libpng was not found in the pkg-config search path. Perhaps you should add the directory containing `libpng.pc' to the PKG_CONFIG_PATH environment variable Package 'libpng', required by 'virtual:world', not found quality.cc Package libpng was not found in the pkg-config search path. Perhaps you should add the directory containing `libpng.pc' to the PKG_CONFIG_PATH environment variable Package 'libpng', required by 'virtual:world', not found quantize.cc Package libpng was not found in the pkg-config search path. Perhaps you should add the directory containing `libpng.pc' to the PKG_CONFIG_PATH environment variable Package 'libpng', required by 'virtual:world', not found score.cc Package libpng was not found in the pkg-config search path. Perhaps you should add the directory containing `libpng.pc' to the PKG_CONFIG_PATH environment variable Package 'libpng', required by 'virtual:world', not found butteraugli.cc Package libpng was not found in the pkg-config search path. Perhaps you should add the directory containing `libpng.pc' to the PKG_CONFIG_PATH environment variable Package 'libpng', required by 'virtual:world', not found during GIMPLE pass: vect third_party/butteraugli/butteraugli/butteraugli.cc: In function ‘void butteraugli::MinSquareVal(size_t, size_t, size_t, size_t, float*)’: third_party/butteraugli/butteraugli/butteraugli.cc:1318:6: internal compiler error: in vect_transform_reduction, at tree-vect-loop.cc:7457 1318 | void MinSquareVal(size_t square_size, size_t offset, | ^~~~~~~~~~~~ 0x197d986 internal_error(char const*, ...) ???:0 0x6e315e fancy_abort(char const*, int, char const*) ???:0 0x19416a5 vect_transform_stmt(vec_info*, _stmt_vec_info*, gimple_stmt_iterator*, _slp_tree*, _slp_instance*) ???:0 0xff19ed vect_transform_loop(_loop_vec_info*, gimple*) ???:0 Please submit a full bug report, with preprocessed source (by using -freport-bug). Please include the complete backtrace with any bug report. See for instructions. Preprocessed source stored into /tmp/ccxe7vNs.out file, please attach this to your bugreport. === BEGIN GCC DUMP === 900171: // Target: aarch64-linux-gnu 900171: // Configured with: ../src/configure -v --with-pkgversion='Debian 12.2.0-14' --with-bugurl=file:///usr/share/doc/gcc-12/README.Bugs --enable-languages=c,ada,c++,go,d,fortran,objc,obj-c++,m2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-12 --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-libquadmath --disable-libquadmath-support --enable-plugin --enable-default-pie --with-system-zlib --enable-libphobos-checking=release --without-target-system-zlib --enable-multiarch --enable-fix-cortex-a53-843419 --disable-werror --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=aarch64-linux-gnu --program-prefix=aarch64-linux-gnu- --includedir=/usr/aarch64-linux-gnu/include 900171: // Thread model: posix 900171: // Supported LTO compression algorithms: zlib zstd 900171: // gcc version 12.2.0 (Debian 12.2.0-14) 900171: // 900171: // during GIMPLE pass: vect 900171: // third_party/butteraugli/butteraugli/butteraugli.cc: In function ‘void butteraugli::MinSquareVal(size_t, size_t, size_t, size_t, float*)’: 900171: // third_party/butteraugli/butteraugli/butteraugli.cc:1318:6: internal compiler error: in vect_transform_reduction, at tree-vect-loop.cc:7457 900171: // 1318 | void MinSquareVal(size_t square_size, size_t offset, 900171: // | ^~~~~~~~~~~~ 900171: // 0x197d986 internal_error(char const*, ...) 900171: // ???:0 900171: // 0x6e315e fancy_abort(char const*, int, char const*) 900171: // ???:0 900171: // 0x19416a5 vect_transform_stmt(vec_info*, _stmt_vec_info*, gimple_stmt_iterator*, _slp_tree*, _slp_instance*) 900171: // ???:0 900171: // 0xff19ed vect_transform_loop(_loop_vec_info*, gimple*) 900171: // ???:0 900171: // Please submit a full bug report, with preprocessed source (by using -freport-bug). 900171: // Please include the complete backtrace with any bug report. 900171: // See for instructions. 900171: 900171: // /usr/lib/gcc-cross/aarch64-linux-gnu/12/cc1plus -quiet -I . -I third_party/butteraugli -imultiarch aarch64-linux-gnu -MMD obj/Release/butteraugli.d -MF obj/Release/butteraugli.d -MP -MQ obj/Release/butteraugli.o -D_GNU_SOURCE -D _FORTIFY_SOURCE=2 third_party/butteraugli/butteraugli/butteraugli.cc -quiet -dumpdir obj/Release/ -dumpbase butteraugli.cc -dumpbase-ext .cc -mlittle-endian -mabi=lp64 -g -g -O2 -O3 -Wformat=1 -Werror=format-security -Wdate-time -std=c++11 -ffile-prefix-map=/<>=. -fstack-protector-strong -fasynchronous-unwind-tables -o - -frandom-seed=0 -fdump-noaddr 900171: 900171: # 0 "third_party/butteraugli/butteraugli/butteraugli.cc" 900171: # 1 "/<>//" 900171: # 0 "" 900171: # 0 "" 900171: # 1 "/usr/aarch64-linux-gnu/include/stdc-predef.h" 1 3 900171: # 0 "" 2 900171: # 1 "third_party/butteraugli/butteraugli/butteraugli.cc" 900171: # 32 "third_party/butteraugli/butteraugli/butteraugli.cc" 900171: # 1 "third_party/butteraugli/butteraugli/butteraugli.h" 1 900171: # 22 "third_party/butteraugli/butteraugli/butteraugli.h" 900171: # 1 "/usr/aarch64-linux-gnu/include/c++/12/cassert" 1 3 900171: # 41 "/usr/aarch64-linux-gnu/include/c++/12/cassert" 3 900171: 900171: # 42 "/usr/aarch64-linux-gnu/include/c++/12/cassert" 3 900171: 900171: # 1 "/usr/aarch64-linux-gnu/include/c++/12/aarch64-linux-gnu/bits/c++config.h" 1 3 900171: # 296 "/usr/aarch64-linux-gnu/include/c++/12/aarch64-linux-gnu/bits/c++config.h" 3 900171: 900171: # 296 "/usr/aarch64-linux-gnu/include/c++/12/aarch64-linux-gnu/bits/c++config.h" 3 900171: namespace std 900171: { 900171: typedef long unsigned int size_t; 900171: typedef long int ptrdiff_t; 900171: 900171: 900171: typedef decltype(nullptr) nullptr_t; 900171: 900171: 900171: #pragma GCC visibility push(default) 900171: 900171: 900171: extern "C++" __attribute__ ((__noreturn__, __always_inline__)) 900171: inline void __terminate() noexcept 900171: { 900171: void terminate() noexcept __attribute__ ((__noreturn__)); 900171: terminate(); 900171: } 900171: #pragma GCC visibility pop 900171: } 900171: # 329 "/usr/aarch64-linux-gnu/include/c++/12/aarch64-linux-gnu/bits/c++config.h" 3 900171: namespace std 900171: { 900171: inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } 900171: } 900171: namespace __gnu_cxx 900171: { 900171: inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } 900171: } 900171: # 508 "/usr/aarch64-linux-gnu/include/c++/12/aarch64-linux-gnu/bits/c++config.h" 3 900171: namespace std 900171: { 900171: #pragma GCC visibility push(default) 900171: 900171: 900171: 900171: 900171: constexpr inline bool 900171: __is_constant_evaluated() noexcept 900171: { 900171: 900171: 900171: 900171: 900171: 900171: return __builtin_is_constant_evaluated(); 900171: 900171: 900171: 900171: } 900171: #pragma GCC visibility pop 900171: } 900171: # 655 "/usr/aarch64-linux-gnu/include/c++/12/aarch64-linux-gnu/bits/c++config.h" 3 900171: # 1 "/usr/aarch64-linux-gnu/include/c++/12/aarch64-linux-gnu/bits/os_defines.h" 1 3 900171: # 39 "/usr/aarch64-linux-gnu/include/c++/12/aarch64-linux-gnu/bits/os_defines.h" 3 900171: # 1 "/usr/aarch64-linux-gnu/include/features.h" 1 3 900171: # 392 "/usr/aarch64-linux-gnu/include/features.h" 3 900171: # 1 "/usr/aarch64-linux-gnu/include/features-time64.h" 1 3 900171: # 20 "/usr/aarch64-linux-gnu/include/features-time64.h" 3 900171: # 1 "/usr/aarch64-linux-gnu/include/bits/wordsize.h" 1 3 900171: # 21 "/usr/aarch64-linux-gnu/include/features-time64.h" 2 3 900171: # 1 "/usr/aarch64-linux-gnu/include/bits/timesize.h" 1 3 900171: # 22 "/usr/aarch64-linux-gnu/include/features-time64.h" 2 3 900171: # 393 "/usr/aarch64-linux-gnu/include/features.h" 2 3 900171: # 489 "/usr/aarch64-linux-gnu/include/features.h" 3 900171: # 1 "/usr/aarch64-linux-gnu/include/sys/cdefs.h" 1 3 900171: # 559 "/usr/aarch64-linux-gnu/include/sys/cdefs.h" 3 900171: # 1 "/usr/aarch64-linux-gnu/include/bits/wordsize.h" 1 3 900171: # 560 "/usr/aarch64-linux-gnu/include/sys/cdefs.h" 2 3 900171: # 1 "/usr/aarch64-linux-gnu/include/bits/long-double.h" 1 3 900171: # 561 "/usr/aarch64-linux-gnu/include/sys/cdefs.h" 2 3 900171: # 490 "/usr/aarch64-linux-gnu/include/features.h" 2 3 900171: # 513 "/usr/aarch64-linux-gnu/include/features.h" 3 900171: # 1 "/usr/aarch64-linux-gnu/include/gnu/stubs.h" 1 3 900171: 900171: 900171: 900171: 900171: # 1 "/usr/aarch64-linux-gnu/include/bits/wordsize.h" 1 3 900171: # 6 "/usr/aarch64-linux-gnu/include/gnu/stubs.h" 2 3 900171: 900171: 900171: # 1 "/usr/aarch64-linux-gnu/include/gnu/stubs-lp64.h" 1 3 900171: # 9 "/usr/aarch64-linux-gnu/include/gnu/stubs.h" 2 3 900171: # 514 "/usr/aarch64-linux-gnu/include/features.h" 2 3 900171: # 40 "/usr/aarch64-linux-gnu/include/c++/12/aarch64-linux-gnu/bits/os_defines.h" 2 3 900171: # 656 "/usr/aarch64-linux-gnu/include/c++/12/aarch64-linux-gnu/bits/c++config.h" 2 3 900171: 900171: 900171: # 1 "/usr/aarch64-linux-gnu/include/c++/12/aarch64-linux-gnu/bits/cpu_defines.h" 1 3 900171: # 659 "/usr/aarch64-linux-gnu/include/c++/12/aarch64-linux-gnu/bits/c++config.h" 2 3 900171: # 44 "/usr/aarch64-linux-gnu/include/c++/12/cassert" 2 3 900171: # 1 "/usr/aarch64-linux-gnu/include/assert.h" 1 3 900171: # 66 "/usr/aarch64-linux-gnu/include/assert.h" 3 900171: extern "C" { 900171: 900171: 900171: extern void __assert_fail (const char *__assertion, const char *__file, 900171: unsigned int __line, const char *__function) 900171: noexcept (true) __attribute__ ((__noreturn__)); 900171: 900171: 900171: extern void __assert_perror_fail (int __errnum, const char *__file, 900171: unsigned int __line, const char *__function) 900171: noexcept (true) __attribute__ ((__noreturn__)); 900171: 900171: 900171: 900171: 900171: extern void __assert (const char *__assertion, const char *__file, int __line) 900171: noexcept (true) __attribute__ ((__noreturn__)); 900171: 900171: 900171: } 900171: # 45 "/usr/aarch64-linux-gnu/include/c++/12/cassert" 2 3 900171: # 23 "third_party/butteraugli/butteraugli/butteraugli.h" 2 900171: # 1 "/usr/aarch64-linux-gnu/include/c++/12/cmath" 1 3 900171: # 39 "/usr/aarch64-linux-gnu/include/c++/12/cmath" 3 900171: 900171: # 40 "/usr/aarch64-linux-gnu/include/c++/12/cmath" 3 900171: 900171: 900171: # 1 "/usr/aarch64-linux-gnu/include/c++/12/bits/cpp_type_traits.h" 1 3 900171: # 35 "/usr/aarch64-linux-gnu/include/c++/12/bits/cpp_type_traits.h" 3 900171: 900171: # 36 "/usr/aarch64-linux-gnu/include/c++/12/bits/cpp_type_traits.h" 3 900171: # 67 "/usr/aarch64-linux-gnu/include/c++/12/bits/cpp_type_traits.h" 3 900171: extern "C++" { 900171: 900171: namespace std __attribute__ ((__visibility__ ("default"))) 900171: { 900171: 900171: 900171: struct __true_type { }; 900171: struct __false_type { }; 900171: 900171: template 900171: struct __truth_type 900171: { typedef __false_type __type; }; 900171: 900171: template<> 900171: struct __truth_type 900171: { typedef __true_type __type; }; 900171: 900171: 900171: 900171: template 900171: struct __traitor 900171: { 900171: enum { __value = bool(_Sp::__value) || bool(_Tp::__value) }; 900171: typedef typename __truth_type<__value>::__type __type; 900171: }; 900171: 900171: 900171: template 900171: struct __are_same 900171: { 900171: enum { __value = 0 }; 900171: typedef __false_type __type; 900171: }; 900171: 900171: template 900171: struct __are_same<_Tp, _Tp> 900171: { 900171: enum { __value = 1 }; 900171: typedef __true_type __type; 900171: }; 900171: 900171: 900171: template 900171: struct __is_void 900171: { 900171: enum { __value = 0 }; 900171: typedef __false_type __type; 900171: }; 900171: 900171: template<> 900171: struct __is_void 900171: { 900171: enum { __value = 1 }; 900171: typedef __true_type __type; 900171: }; 900171: 900171: 900171: 900171: 900171: template 900171: struct __is_integer 900171: { 900171: enum { __value = 0 }; 900171: typedef __false_type __type; 900171: }; 900171: 900171: 900171: 900171: 900171: 900171: template<> 900171: struct __is_integer 900171: { 900171: enum { __value = 1 }; 900171: typedef __true_type __type; 900171: }; 900171: 900171: template<> 900171: struct __is_integer 900171: { 900171: enum { __value = 1 }; 900171: typedef __true_type __type; 900171: }; 900171: 900171: template<> 900171: struct __is_integer 900171: { 900171: enum { __value = 1 }; 900171: typedef __true_type __type; 900171: }; 900171: 900171: template<> 900171: struct __is_integer 900171: { 900171: enum { __value = 1 }; 900171: typedef __true_type __type; 900171: }; 900171: 900171: 900171: template<> 900171: struct __is_integer 900171: { 900171: enum { __value = 1 }; 900171: typedef __true_type __type; 900171: }; 900171: # 184 "/usr/aarch64-linux-gnu/include/c++/12/bits/cpp_type_traits.h" 3 900171: template<> 900171: struct __is_integer 900171: { 900171: enum { __value = 1 }; 900171: typedef __true_type __type; 900171: }; 900171: 900171: template<> 900171: struct __is_integer 900171: { 900171: enum { __value = 1 }; 900171: typedef __true_type __type; 900171: }; 900171: 900171: 900171: template<> 900171: struct __is_integer 900171: { 900171: enum { __value = 1 }; 900171: typedef __true_type __type; 900171: }; 900171: 900171: template<> 900171: struct __is_integer 900171: { 900171: enum { __value = 1 }; 900171: typedef __true_type __type; 900171: }; 900171: 900171: template<> 900171: struct __is_integer 900171: { 900171: enum { __value = 1 }; 900171: typedef __true_type __type; 900171: }; 900171: 900171: template<> 900171: struct __is_integer 900171: { 900171: enum { __value = 1 }; 900171: typedef __true_type __type; 900171: }; 900171: 900171: template<> 900171: struct __is_integer 900171: { 900171: enum { __value = 1 }; 900171: typedef __true_type __type; 900171: }; 900171: 900171: template<> 900171: struct __is_integer 900171: { 900171: enum { __value = 1 }; 900171: typedef __true_type __type; 900171: }; 900171: 900171: template<> 900171: struct __is_integer 900171: { 900171: enum { __value = 1 }; 900171: typedef __true_type __type; 900171: }; 900171: 900171: template<> 900171: struct __is_integer 900171: { 900171: enum { __value = 1 }; 900171: typedef __true_type __type; 900171: }; 900171: # 289 "/usr/aarch64-linux-gnu/include/c++/12/bits/cpp_type_traits.h" 3 900171: template 900171: struct __is_floating 900171: { 900171: enum { __value = 0 }; 900171: typedef __false_type __type; 900171: }; 900171: 900171: 900171: template<> 900171: struct __is_floating 900171: { 900171: enum { __value = 1 }; 900171: typedef __true_type __type; 900171: }; 900171: 900171: template<> 900171: struct __is_floating 900171: { 900171: enum { __value = 1 }; 900171: typedef __true_type __type; 900171: }; 900171: 900171: template<> 900171: struct __is_floating 900171: { 900171: enum { __value = 1 }; 900171: typedef __true_type __type; 900171: }; 900171: 900171: 900171: 900171: 900171: template 900171: struct __is_pointer 900171: { 900171: enum { __value = 0 }; 900171: typedef __false_type __type; 900171: }; 900171: 900171: template 900171: struct __is_pointer<_Tp*> 900171: { 900171: enum { __value = 1 }; 900171: typedef __true_type __type; 900171: }; 900171: 900171: 900171: 900171: 900171: template 900171: struct __is_arithmetic 900171: : public __traitor<__is_integer<_Tp>, __is_floating<_Tp> > 900171: { }; 900171: 900171: 900171: 900171: 900171: template 900171: struct __is_scalar 900171: : public __traitor<__is_arithmetic<_Tp>, __is_pointer<_Tp> > 900171: { }; 900171: 900171: 900171: 900171: 900171: template 900171: struct __is_char 900171: { 900171: enum { __value = 0 }; 900171: typedef __false_type __type; 900171: }; 900171: 900171: template<> 900171: struct __is_char 900171: { 900171: enum { __value = 1 }; 900171: typedef __true_type __type; 900171: }; 900171: 900171: 900171: template<> 900171: struct __is_char 900171: { 900171: enum { __value = 1 }; 900171: typedef __true_type __type; 900171: }; 900171: 900171: 900171: template 900171: struct __is_byte 900171: { 900171: enum { __value = 0 }; 900171: typedef __false_type __type; 900171: }; 900171: 900171: template<> 900171: struct __is_byte 900171: { 900171: enum { __value = 1 }; 900171: typedef __true_type __type; 900171: }; 900171: 900171: template<> 900171: struct __is_byte 900171: { 900171: enum { __value = 1 }; 900171: typedef __true_type __type; 900171: }; 900171: 900171: template<> 900171: struct __is_byte 900171: { 900171: enum { __value = 1 }; 900171: typedef __true_type __type; 900171: }; 900171: # 425 "/usr/aarch64-linux-gnu/include/c++/12/bits/cpp_type_traits.h" 3 900171: template struct iterator_traits; 900171: 900171: 900171: template 900171: struct __is_nonvolatile_trivially_copyable 900171: { 900171: enum { __value = __is_trivially_copyable(_Tp) }; 900171: }; 900171: 900171: 900171: 900171: 900171: template 900171: struct __is_nonvolatile_trivially_copyable 900171: { 900171: enum { __value = 0 }; 900171: }; 900171: 900171: 900171: template 900171: struct __memcpyable 900171: { 900171: enum { __value = 0 }; 900171: }; 900171: 900171: template 900171: struct __memcpyable<_Tp*, _Tp*> 900171: : __is_nonvolatile_trivially_copyable<_Tp> 900171: { }; 900171: 900171: template 900171: struct __memcpyable<_Tp*, const _Tp*> 900171: : __is_nonvolatile_trivially_copyable<_Tp> 900171: { }; 900171: 900171: 900171: 900171: 900171: 900171: 900171: template 900171: struct __memcmpable 900171: { 900171: enum { __value = 0 }; 900171: }; 900171: 900171: 900171: template 900171: struct __memcmpable<_Tp*, _Tp*> 900171: : __is_nonvolatile_trivially_copyable<_Tp> 900171: { }; 900171: 900171: template 900171: struct __memcmpable 900171: : __is_nonvolatile_trivially_copyable<_Tp> 900171: { }; 900171: 900171: template 900171: struct __memcmpable<_Tp*, const _Tp*> 900171: : __is_nonvolatile_trivially_copyable<_Tp> 900171: { }; 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: template::__value 900171: 900171: > 900171: struct __is_memcmp_ordered 900171: { 900171: static const bool __value = _Tp(-1) > _Tp(1); 900171: }; 900171: 900171: template 900171: struct __is_memcmp_ordered<_Tp, false> 900171: { 900171: static const bool __value = false; 900171: }; 900171: 900171: 900171: template 900171: struct __is_memcmp_ordered_with 900171: { 900171: static const bool __value = __is_memcmp_ordered<_Tp>::__value 900171: && __is_memcmp_ordered<_Up>::__value; 900171: }; 900171: 900171: template 900171: struct __is_memcmp_ordered_with<_Tp, _Up, false> 900171: { 900171: static const bool __value = false; 900171: }; 900171: # 550 "/usr/aarch64-linux-gnu/include/c++/12/bits/cpp_type_traits.h" 3 900171: template 900171: struct __is_move_iterator 900171: { 900171: enum { __value = 0 }; 900171: typedef __false_type __type; 900171: }; 900171: 900171: 900171: 900171: template 900171: 900171: inline _Iterator 900171: __miter_base(_Iterator __it) 900171: { return __it; } 900171: 900171: 900171: } 900171: } 900171: # 43 "/usr/aarch64-linux-gnu/include/c++/12/cmath" 2 3 900171: # 1 "/usr/aarch64-linux-gnu/include/c++/12/ext/type_traits.h" 1 3 900171: # 32 "/usr/aarch64-linux-gnu/include/c++/12/ext/type_traits.h" 3 900171: 900171: # 33 "/usr/aarch64-linux-gnu/include/c++/12/ext/type_traits.h" 3 900171: 900171: 900171: 900171: 900171: extern "C++" { 900171: 900171: namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) 900171: { 900171: 900171: 900171: 900171: template 900171: struct __enable_if 900171: { }; 900171: 900171: template 900171: struct __enable_if 900171: { typedef _Tp __type; }; 900171: 900171: 900171: 900171: template 900171: struct __conditional_type 900171: { typedef _Iftrue __type; }; 900171: 900171: template 900171: struct __conditional_type 900171: { typedef _Iffalse __type; }; 900171: 900171: 900171: 900171: template 900171: struct __add_unsigned 900171: { 900171: private: 900171: typedef __enable_if::__value, _Tp> __if_type; 900171: 900171: public: 900171: typedef typename __if_type::__type __type; 900171: }; 900171: 900171: template<> 900171: struct __add_unsigned 900171: { typedef unsigned char __type; }; 900171: 900171: template<> 900171: struct __add_unsigned 900171: { typedef unsigned char __type; }; 900171: 900171: template<> 900171: struct __add_unsigned 900171: { typedef unsigned short __type; }; 900171: 900171: template<> 900171: struct __add_unsigned 900171: { typedef unsigned int __type; }; 900171: 900171: template<> 900171: struct __add_unsigned 900171: { typedef unsigned long __type; }; 900171: 900171: template<> 900171: struct __add_unsigned 900171: { typedef unsigned long long __type; }; 900171: 900171: 900171: template<> 900171: struct __add_unsigned; 900171: 900171: template<> 900171: struct __add_unsigned; 900171: 900171: 900171: 900171: template 900171: struct __remove_unsigned 900171: { 900171: private: 900171: typedef __enable_if::__value, _Tp> __if_type; 900171: 900171: public: 900171: typedef typename __if_type::__type __type; 900171: }; 900171: 900171: template<> 900171: struct __remove_unsigned 900171: { typedef signed char __type; }; 900171: 900171: template<> 900171: struct __remove_unsigned 900171: { typedef signed char __type; }; 900171: 900171: template<> 900171: struct __remove_unsigned 900171: { typedef short __type; }; 900171: 900171: template<> 900171: struct __remove_unsigned 900171: { typedef int __type; }; 900171: 900171: template<> 900171: struct __remove_unsigned 900171: { typedef long __type; }; 900171: 900171: template<> 900171: struct __remove_unsigned 900171: { typedef long long __type; }; 900171: 900171: 900171: template<> 900171: struct __remove_unsigned; 900171: 900171: template<> 900171: struct __remove_unsigned; 900171: 900171: 900171: 900171: template 900171: constexpr 900171: inline bool 900171: __is_null_pointer(_Type* __ptr) 900171: { return __ptr == 0; } 900171: 900171: template 900171: constexpr 900171: inline bool 900171: __is_null_pointer(_Type) 900171: { return false; } 900171: 900171: 900171: constexpr bool 900171: __is_null_pointer(std::nullptr_t) 900171: { return true; } 900171: 900171: 900171: 900171: 900171: template::__value> 900171: struct __promote 900171: { typedef double __type; }; 900171: 900171: 900171: 900171: 900171: template 900171: struct __promote<_Tp, false> 900171: { }; 900171: 900171: template<> 900171: struct __promote 900171: { typedef long double __type; }; 900171: 900171: template<> 900171: struct __promote 900171: { typedef double __type; }; 900171: 900171: template<> 900171: struct __promote 900171: { typedef float __type; }; 900171: # 211 "/usr/aarch64-linux-gnu/include/c++/12/ext/type_traits.h" 3 900171: template::__type, 900171: typename _Up2 = typename __promote<_Up>::__type> 900171: struct __promote_2 900171: { 900171: typedef __typeof__(_Tp2() + _Up2()) __type; 900171: }; 900171: 900171: template::__type, 900171: typename _Up2 = typename __promote<_Up>::__type, 900171: typename _Vp2 = typename __promote<_Vp>::__type> 900171: struct __promote_3 900171: { 900171: typedef __typeof__(_Tp2() + _Up2() + _Vp2()) __type; 900171: }; 900171: 900171: template::__type, 900171: typename _Up2 = typename __promote<_Up>::__type, 900171: typename _Vp2 = typename __promote<_Vp>::__type, 900171: typename _Wp2 = typename __promote<_Wp>::__type> 900171: struct __promote_4 900171: { 900171: typedef __typeof__(_Tp2() + _Up2() + _Vp2() + _Wp2()) __type; 900171: }; 900171: 900171: 900171: 900171: } 900171: } 900171: # 44 "/usr/aarch64-linux-gnu/include/c++/12/cmath" 2 3 900171: 900171: # 1 "/usr/aarch64-linux-gnu/include/math.h" 1 3 900171: # 27 "/usr/aarch64-linux-gnu/include/math.h" 3 900171: # 1 "/usr/aarch64-linux-gnu/include/bits/libc-header-start.h" 1 3 900171: # 28 "/usr/aarch64-linux-gnu/include/math.h" 2 3 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern "C" { 900171: 900171: 900171: # 1 "/usr/aarch64-linux-gnu/include/bits/types.h" 1 3 900171: # 27 "/usr/aarch64-linux-gnu/include/bits/types.h" 3 900171: # 1 "/usr/aarch64-linux-gnu/include/bits/wordsize.h" 1 3 900171: # 28 "/usr/aarch64-linux-gnu/include/bits/types.h" 2 3 900171: # 1 "/usr/aarch64-linux-gnu/include/bits/timesize.h" 1 3 900171: # 29 "/usr/aarch64-linux-gnu/include/bits/types.h" 2 3 900171: 900171: 900171: typedef unsigned char __u_char; 900171: typedef unsigned short int __u_short; 900171: typedef unsigned int __u_int; 900171: typedef unsigned long int __u_long; 900171: 900171: 900171: typedef signed char __int8_t; 900171: typedef unsigned char __uint8_t; 900171: typedef signed short int __int16_t; 900171: typedef unsigned short int __uint16_t; 900171: typedef signed int __int32_t; 900171: typedef unsigned int __uint32_t; 900171: 900171: typedef signed long int __int64_t; 900171: typedef unsigned long int __uint64_t; 900171: 900171: 900171: 900171: 900171: 900171: 900171: typedef __int8_t __int_least8_t; 900171: typedef __uint8_t __uint_least8_t; 900171: typedef __int16_t __int_least16_t; 900171: typedef __uint16_t __uint_least16_t; 900171: typedef __int32_t __int_least32_t; 900171: typedef __uint32_t __uint_least32_t; 900171: typedef __int64_t __int_least64_t; 900171: typedef __uint64_t __uint_least64_t; 900171: 900171: 900171: 900171: typedef long int __quad_t; 900171: typedef unsigned long int __u_quad_t; 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: typedef long int __intmax_t; 900171: typedef unsigned long int __uintmax_t; 900171: # 141 "/usr/aarch64-linux-gnu/include/bits/types.h" 3 900171: # 1 "/usr/aarch64-linux-gnu/include/bits/typesizes.h" 1 3 900171: # 142 "/usr/aarch64-linux-gnu/include/bits/types.h" 2 3 900171: # 1 "/usr/aarch64-linux-gnu/include/bits/time64.h" 1 3 900171: # 143 "/usr/aarch64-linux-gnu/include/bits/types.h" 2 3 900171: 900171: 900171: typedef unsigned long int __dev_t; 900171: typedef unsigned int __uid_t; 900171: typedef unsigned int __gid_t; 900171: typedef unsigned long int __ino_t; 900171: typedef unsigned long int __ino64_t; 900171: typedef unsigned int __mode_t; 900171: typedef unsigned int __nlink_t; 900171: typedef long int __off_t; 900171: typedef long int __off64_t; 900171: typedef int __pid_t; 900171: typedef struct { int __val[2]; } __fsid_t; 900171: typedef long int __clock_t; 900171: typedef unsigned long int __rlim_t; 900171: typedef unsigned long int __rlim64_t; 900171: typedef unsigned int __id_t; 900171: typedef long int __time_t; 900171: typedef unsigned int __useconds_t; 900171: typedef long int __suseconds_t; 900171: typedef long int __suseconds64_t; 900171: 900171: typedef int __daddr_t; 900171: typedef int __key_t; 900171: 900171: 900171: typedef int __clockid_t; 900171: 900171: 900171: typedef void * __timer_t; 900171: 900171: 900171: typedef int __blksize_t; 900171: 900171: 900171: 900171: 900171: typedef long int __blkcnt_t; 900171: typedef long int __blkcnt64_t; 900171: 900171: 900171: typedef unsigned long int __fsblkcnt_t; 900171: typedef unsigned long int __fsblkcnt64_t; 900171: 900171: 900171: typedef unsigned long int __fsfilcnt_t; 900171: typedef unsigned long int __fsfilcnt64_t; 900171: 900171: 900171: typedef long int __fsword_t; 900171: 900171: typedef long int __ssize_t; 900171: 900171: 900171: typedef long int __syscall_slong_t; 900171: 900171: typedef unsigned long int __syscall_ulong_t; 900171: 900171: 900171: 900171: typedef __off64_t __loff_t; 900171: typedef char *__caddr_t; 900171: 900171: 900171: typedef long int __intptr_t; 900171: 900171: 900171: typedef unsigned int __socklen_t; 900171: 900171: 900171: 900171: 900171: typedef int __sig_atomic_t; 900171: # 38 "/usr/aarch64-linux-gnu/include/math.h" 2 3 900171: 900171: 900171: # 1 "/usr/aarch64-linux-gnu/include/bits/math-vector.h" 1 3 900171: # 27 "/usr/aarch64-linux-gnu/include/bits/math-vector.h" 3 900171: # 1 "/usr/aarch64-linux-gnu/include/bits/libm-simd-decl-stubs.h" 1 3 900171: # 28 "/usr/aarch64-linux-gnu/include/bits/math-vector.h" 2 3 900171: # 41 "/usr/aarch64-linux-gnu/include/math.h" 2 3 900171: 900171: 900171: # 1 "/usr/aarch64-linux-gnu/include/bits/floatn.h" 1 3 900171: # 23 "/usr/aarch64-linux-gnu/include/bits/floatn.h" 3 900171: # 1 "/usr/aarch64-linux-gnu/include/bits/long-double.h" 1 3 900171: # 24 "/usr/aarch64-linux-gnu/include/bits/floatn.h" 2 3 900171: # 80 "/usr/aarch64-linux-gnu/include/bits/floatn.h" 3 900171: typedef long double _Float128; 900171: # 95 "/usr/aarch64-linux-gnu/include/bits/floatn.h" 3 900171: # 1 "/usr/aarch64-linux-gnu/include/bits/floatn-common.h" 1 3 900171: # 24 "/usr/aarch64-linux-gnu/include/bits/floatn-common.h" 3 900171: # 1 "/usr/aarch64-linux-gnu/include/bits/long-double.h" 1 3 900171: # 25 "/usr/aarch64-linux-gnu/include/bits/floatn-common.h" 2 3 900171: # 214 "/usr/aarch64-linux-gnu/include/bits/floatn-common.h" 3 900171: typedef float _Float32; 900171: # 251 "/usr/aarch64-linux-gnu/include/bits/floatn-common.h" 3 900171: typedef double _Float64; 900171: # 268 "/usr/aarch64-linux-gnu/include/bits/floatn-common.h" 3 900171: typedef double _Float32x; 900171: # 285 "/usr/aarch64-linux-gnu/include/bits/floatn-common.h" 3 900171: typedef long double _Float64x; 900171: # 96 "/usr/aarch64-linux-gnu/include/bits/floatn.h" 2 3 900171: # 44 "/usr/aarch64-linux-gnu/include/math.h" 2 3 900171: # 152 "/usr/aarch64-linux-gnu/include/math.h" 3 900171: # 1 "/usr/aarch64-linux-gnu/include/bits/flt-eval-method.h" 1 3 900171: # 153 "/usr/aarch64-linux-gnu/include/math.h" 2 3 900171: # 163 "/usr/aarch64-linux-gnu/include/math.h" 3 900171: typedef float float_t; 900171: typedef double double_t; 900171: # 204 "/usr/aarch64-linux-gnu/include/math.h" 3 900171: # 1 "/usr/aarch64-linux-gnu/include/bits/fp-logb.h" 1 3 900171: # 205 "/usr/aarch64-linux-gnu/include/math.h" 2 3 900171: # 247 "/usr/aarch64-linux-gnu/include/math.h" 3 900171: # 1 "/usr/aarch64-linux-gnu/include/bits/fp-fast.h" 1 3 900171: # 248 "/usr/aarch64-linux-gnu/include/math.h" 2 3 900171: 900171: 900171: 900171: enum 900171: { 900171: FP_INT_UPWARD = 900171: 900171: 0, 900171: FP_INT_DOWNWARD = 900171: 900171: 1, 900171: FP_INT_TOWARDZERO = 900171: 900171: 2, 900171: FP_INT_TONEARESTFROMZERO = 900171: 900171: 3, 900171: FP_INT_TONEAREST = 900171: 900171: 4, 900171: }; 900171: # 312 "/usr/aarch64-linux-gnu/include/math.h" 3 900171: # 1 "/usr/aarch64-linux-gnu/include/bits/mathcalls-helper-functions.h" 1 3 900171: # 20 "/usr/aarch64-linux-gnu/include/bits/mathcalls-helper-functions.h" 3 900171: extern int __fpclassify (double __value) noexcept (true) 900171: __attribute__ ((__const__)); 900171: 900171: 900171: extern int __signbit (double __value) noexcept (true) 900171: __attribute__ ((__const__)); 900171: 900171: 900171: 900171: extern int __isinf (double __value) noexcept (true) 900171: __attribute__ ((__const__)); 900171: 900171: 900171: extern int __finite (double __value) noexcept (true) 900171: __attribute__ ((__const__)); 900171: 900171: 900171: extern int __isnan (double __value) noexcept (true) 900171: __attribute__ ((__const__)); 900171: 900171: 900171: extern int __iseqsig (double __x, double __y) noexcept (true); 900171: 900171: 900171: extern int __issignaling (double __value) noexcept (true) 900171: __attribute__ ((__const__)); 900171: # 313 "/usr/aarch64-linux-gnu/include/math.h" 2 3 900171: # 1 "/usr/aarch64-linux-gnu/include/bits/mathcalls.h" 1 3 900171: # 53 "/usr/aarch64-linux-gnu/include/bits/mathcalls.h" 3 900171: extern double acos (double __x) noexcept (true); extern double __acos (double __x) noexcept (true); 900171: 900171: extern double asin (double __x) noexcept (true); extern double __asin (double __x) noexcept (true); 900171: 900171: extern double atan (double __x) noexcept (true); extern double __atan (double __x) noexcept (true); 900171: 900171: extern double atan2 (double __y, double __x) noexcept (true); extern double __atan2 (double __y, double __x) noexcept (true); 900171: 900171: 900171: extern double cos (double __x) noexcept (true); extern double __cos (double __x) noexcept (true); 900171: 900171: extern double sin (double __x) noexcept (true); extern double __sin (double __x) noexcept (true); 900171: 900171: extern double tan (double __x) noexcept (true); extern double __tan (double __x) noexcept (true); 900171: 900171: 900171: 900171: 900171: extern double cosh (double __x) noexcept (true); extern double __cosh (double __x) noexcept (true); 900171: 900171: extern double sinh (double __x) noexcept (true); extern double __sinh (double __x) noexcept (true); 900171: 900171: extern double tanh (double __x) noexcept (true); extern double __tanh (double __x) noexcept (true); 900171: 900171: 900171: 900171: extern void sincos (double __x, double *__sinx, double *__cosx) noexcept (true); extern void __sincos (double __x, double *__sinx, double *__cosx) noexcept (true) 900171: ; 900171: 900171: 900171: 900171: 900171: extern double acosh (double __x) noexcept (true); extern double __acosh (double __x) noexcept (true); 900171: 900171: extern double asinh (double __x) noexcept (true); extern double __asinh (double __x) noexcept (true); 900171: 900171: extern double atanh (double __x) noexcept (true); extern double __atanh (double __x) noexcept (true); 900171: 900171: 900171: 900171: 900171: 900171: extern double exp (double __x) noexcept (true); extern double __exp (double __x) noexcept (true); 900171: 900171: 900171: extern double frexp (double __x, int *__exponent) noexcept (true); extern double __frexp (double __x, int *__exponent) noexcept (true); 900171: 900171: 900171: extern double ldexp (double __x, int __exponent) noexcept (true); extern double __ldexp (double __x, int __exponent) noexcept (true); 900171: 900171: 900171: extern double log (double __x) noexcept (true); extern double __log (double __x) noexcept (true); 900171: 900171: 900171: extern double log10 (double __x) noexcept (true); extern double __log10 (double __x) noexcept (true); 900171: 900171: 900171: extern double modf (double __x, double *__iptr) noexcept (true); extern double __modf (double __x, double *__iptr) noexcept (true) __attribute__ ((__nonnull__ (2))); 900171: 900171: 900171: 900171: extern double exp10 (double __x) noexcept (true); extern double __exp10 (double __x) noexcept (true); 900171: 900171: 900171: 900171: 900171: extern double expm1 (double __x) noexcept (true); extern double __expm1 (double __x) noexcept (true); 900171: 900171: 900171: extern double log1p (double __x) noexcept (true); extern double __log1p (double __x) noexcept (true); 900171: 900171: 900171: extern double logb (double __x) noexcept (true); extern double __logb (double __x) noexcept (true); 900171: 900171: 900171: 900171: 900171: extern double exp2 (double __x) noexcept (true); extern double __exp2 (double __x) noexcept (true); 900171: 900171: 900171: extern double log2 (double __x) noexcept (true); extern double __log2 (double __x) noexcept (true); 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern double pow (double __x, double __y) noexcept (true); extern double __pow (double __x, double __y) noexcept (true); 900171: 900171: 900171: extern double sqrt (double __x) noexcept (true); extern double __sqrt (double __x) noexcept (true); 900171: 900171: 900171: 900171: extern double hypot (double __x, double __y) noexcept (true); extern double __hypot (double __x, double __y) noexcept (true); 900171: 900171: 900171: 900171: 900171: extern double cbrt (double __x) noexcept (true); extern double __cbrt (double __x) noexcept (true); 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern double ceil (double __x) noexcept (true) __attribute__ ((__const__)); extern double __ceil (double __x) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: extern double fabs (double __x) noexcept (true) __attribute__ ((__const__)); extern double __fabs (double __x) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: extern double floor (double __x) noexcept (true) __attribute__ ((__const__)); extern double __floor (double __x) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: extern double fmod (double __x, double __y) noexcept (true); extern double __fmod (double __x, double __y) noexcept (true); 900171: # 183 "/usr/aarch64-linux-gnu/include/bits/mathcalls.h" 3 900171: extern int finite (double __value) noexcept (true) 900171: __attribute__ ((__const__)); 900171: 900171: 900171: extern double drem (double __x, double __y) noexcept (true); extern double __drem (double __x, double __y) noexcept (true); 900171: 900171: 900171: 900171: extern double significand (double __x) noexcept (true); extern double __significand (double __x) noexcept (true); 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern double copysign (double __x, double __y) noexcept (true) __attribute__ ((__const__)); extern double __copysign (double __x, double __y) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: 900171: 900171: extern double nan (const char *__tagb) noexcept (true); extern double __nan (const char *__tagb) noexcept (true); 900171: # 220 "/usr/aarch64-linux-gnu/include/bits/mathcalls.h" 3 900171: extern double j0 (double) noexcept (true); extern double __j0 (double) noexcept (true); 900171: extern double j1 (double) noexcept (true); extern double __j1 (double) noexcept (true); 900171: extern double jn (int, double) noexcept (true); extern double __jn (int, double) noexcept (true); 900171: extern double y0 (double) noexcept (true); extern double __y0 (double) noexcept (true); 900171: extern double y1 (double) noexcept (true); extern double __y1 (double) noexcept (true); 900171: extern double yn (int, double) noexcept (true); extern double __yn (int, double) noexcept (true); 900171: 900171: 900171: 900171: 900171: 900171: extern double erf (double) noexcept (true); extern double __erf (double) noexcept (true); 900171: extern double erfc (double) noexcept (true); extern double __erfc (double) noexcept (true); 900171: extern double lgamma (double) noexcept (true); extern double __lgamma (double) noexcept (true); 900171: 900171: 900171: 900171: 900171: extern double tgamma (double) noexcept (true); extern double __tgamma (double) noexcept (true); 900171: 900171: 900171: 900171: 900171: 900171: extern double gamma (double) noexcept (true); extern double __gamma (double) noexcept (true); 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern double lgamma_r (double, int *__signgamp) noexcept (true); extern double __lgamma_r (double, int *__signgamp) noexcept (true); 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern double rint (double __x) noexcept (true); extern double __rint (double __x) noexcept (true); 900171: 900171: 900171: extern double nextafter (double __x, double __y) noexcept (true); extern double __nextafter (double __x, double __y) noexcept (true); 900171: 900171: extern double nexttoward (double __x, long double __y) noexcept (true); extern double __nexttoward (double __x, long double __y) noexcept (true); 900171: 900171: 900171: 900171: 900171: extern double nextdown (double __x) noexcept (true); extern double __nextdown (double __x) noexcept (true); 900171: 900171: extern double nextup (double __x) noexcept (true); extern double __nextup (double __x) noexcept (true); 900171: 900171: 900171: 900171: extern double remainder (double __x, double __y) noexcept (true); extern double __remainder (double __x, double __y) noexcept (true); 900171: 900171: 900171: 900171: extern double scalbn (double __x, int __n) noexcept (true); extern double __scalbn (double __x, int __n) noexcept (true); 900171: 900171: 900171: 900171: extern int ilogb (double __x) noexcept (true); extern int __ilogb (double __x) noexcept (true); 900171: 900171: 900171: 900171: 900171: extern long int llogb (double __x) noexcept (true); extern long int __llogb (double __x) noexcept (true); 900171: 900171: 900171: 900171: 900171: extern double scalbln (double __x, long int __n) noexcept (true); extern double __scalbln (double __x, long int __n) noexcept (true); 900171: 900171: 900171: 900171: extern double nearbyint (double __x) noexcept (true); extern double __nearbyint (double __x) noexcept (true); 900171: 900171: 900171: 900171: extern double round (double __x) noexcept (true) __attribute__ ((__const__)); extern double __round (double __x) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: 900171: extern double trunc (double __x) noexcept (true) __attribute__ ((__const__)); extern double __trunc (double __x) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: 900171: 900171: extern double remquo (double __x, double __y, int *__quo) noexcept (true); extern double __remquo (double __x, double __y, int *__quo) noexcept (true); 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern long int lrint (double __x) noexcept (true); extern long int __lrint (double __x) noexcept (true); 900171: __extension__ 900171: extern long long int llrint (double __x) noexcept (true); extern long long int __llrint (double __x) noexcept (true); 900171: 900171: 900171: 900171: extern long int lround (double __x) noexcept (true); extern long int __lround (double __x) noexcept (true); 900171: __extension__ 900171: extern long long int llround (double __x) noexcept (true); extern long long int __llround (double __x) noexcept (true); 900171: 900171: 900171: 900171: extern double fdim (double __x, double __y) noexcept (true); extern double __fdim (double __x, double __y) noexcept (true); 900171: 900171: 900171: 900171: extern double fmax (double __x, double __y) noexcept (true) __attribute__ ((__const__)); extern double __fmax (double __x, double __y) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: extern double fmin (double __x, double __y) noexcept (true) __attribute__ ((__const__)); extern double __fmin (double __x, double __y) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: 900171: extern double fma (double __x, double __y, double __z) noexcept (true); extern double __fma (double __x, double __y, double __z) noexcept (true); 900171: 900171: 900171: 900171: 900171: extern double roundeven (double __x) noexcept (true) __attribute__ ((__const__)); extern double __roundeven (double __x) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: 900171: extern __intmax_t fromfp (double __x, int __round, unsigned int __width) noexcept (true); extern __intmax_t __fromfp (double __x, int __round, unsigned int __width) noexcept (true) 900171: ; 900171: 900171: 900171: 900171: extern __uintmax_t ufromfp (double __x, int __round, unsigned int __width) noexcept (true); extern __uintmax_t __ufromfp (double __x, int __round, unsigned int __width) noexcept (true) 900171: ; 900171: 900171: 900171: 900171: 900171: extern __intmax_t fromfpx (double __x, int __round, unsigned int __width) noexcept (true); extern __intmax_t __fromfpx (double __x, int __round, unsigned int __width) noexcept (true) 900171: ; 900171: 900171: 900171: 900171: 900171: extern __uintmax_t ufromfpx (double __x, int __round, unsigned int __width) noexcept (true); extern __uintmax_t __ufromfpx (double __x, int __round, unsigned int __width) noexcept (true) 900171: ; 900171: 900171: 900171: extern int canonicalize (double *__cx, const double *__x) noexcept (true); 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern double fmaxmag (double __x, double __y) noexcept (true) __attribute__ ((__const__)); extern double __fmaxmag (double __x, double __y) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: extern double fminmag (double __x, double __y) noexcept (true) __attribute__ ((__const__)); extern double __fminmag (double __x, double __y) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: 900171: 900171: extern double fmaximum (double __x, double __y) noexcept (true) __attribute__ ((__const__)); extern double __fmaximum (double __x, double __y) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: extern double fminimum (double __x, double __y) noexcept (true) __attribute__ ((__const__)); extern double __fminimum (double __x, double __y) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: extern double fmaximum_num (double __x, double __y) noexcept (true) __attribute__ ((__const__)); extern double __fmaximum_num (double __x, double __y) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: extern double fminimum_num (double __x, double __y) noexcept (true) __attribute__ ((__const__)); extern double __fminimum_num (double __x, double __y) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: extern double fmaximum_mag (double __x, double __y) noexcept (true) __attribute__ ((__const__)); extern double __fmaximum_mag (double __x, double __y) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: extern double fminimum_mag (double __x, double __y) noexcept (true) __attribute__ ((__const__)); extern double __fminimum_mag (double __x, double __y) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: extern double fmaximum_mag_num (double __x, double __y) noexcept (true) __attribute__ ((__const__)); extern double __fmaximum_mag_num (double __x, double __y) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: extern double fminimum_mag_num (double __x, double __y) noexcept (true) __attribute__ ((__const__)); extern double __fminimum_mag_num (double __x, double __y) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: 900171: 900171: extern int totalorder (const double *__x, const double *__y) noexcept (true) 900171: 900171: __attribute__ ((__pure__)); 900171: 900171: 900171: extern int totalordermag (const double *__x, const double *__y) noexcept (true) 900171: 900171: __attribute__ ((__pure__)); 900171: 900171: 900171: extern double getpayload (const double *__x) noexcept (true); extern double __getpayload (const double *__x) noexcept (true); 900171: 900171: 900171: extern int setpayload (double *__x, double __payload) noexcept (true); 900171: 900171: 900171: extern int setpayloadsig (double *__x, double __payload) noexcept (true); 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern double scalb (double __x, double __n) noexcept (true); extern double __scalb (double __x, double __n) noexcept (true); 900171: # 314 "/usr/aarch64-linux-gnu/include/math.h" 2 3 900171: # 329 "/usr/aarch64-linux-gnu/include/math.h" 3 900171: # 1 "/usr/aarch64-linux-gnu/include/bits/mathcalls-helper-functions.h" 1 3 900171: # 20 "/usr/aarch64-linux-gnu/include/bits/mathcalls-helper-functions.h" 3 900171: extern int __fpclassifyf (float __value) noexcept (true) 900171: __attribute__ ((__const__)); 900171: 900171: 900171: extern int __signbitf (float __value) noexcept (true) 900171: __attribute__ ((__const__)); 900171: 900171: 900171: 900171: extern int __isinff (float __value) noexcept (true) 900171: __attribute__ ((__const__)); 900171: 900171: 900171: extern int __finitef (float __value) noexcept (true) 900171: __attribute__ ((__const__)); 900171: 900171: 900171: extern int __isnanf (float __value) noexcept (true) 900171: __attribute__ ((__const__)); 900171: 900171: 900171: extern int __iseqsigf (float __x, float __y) noexcept (true); 900171: 900171: 900171: extern int __issignalingf (float __value) noexcept (true) 900171: __attribute__ ((__const__)); 900171: # 330 "/usr/aarch64-linux-gnu/include/math.h" 2 3 900171: # 1 "/usr/aarch64-linux-gnu/include/bits/mathcalls.h" 1 3 900171: # 53 "/usr/aarch64-linux-gnu/include/bits/mathcalls.h" 3 900171: extern float acosf (float __x) noexcept (true); extern float __acosf (float __x) noexcept (true); 900171: 900171: extern float asinf (float __x) noexcept (true); extern float __asinf (float __x) noexcept (true); 900171: 900171: extern float atanf (float __x) noexcept (true); extern float __atanf (float __x) noexcept (true); 900171: 900171: extern float atan2f (float __y, float __x) noexcept (true); extern float __atan2f (float __y, float __x) noexcept (true); 900171: 900171: 900171: extern float cosf (float __x) noexcept (true); extern float __cosf (float __x) noexcept (true); 900171: 900171: extern float sinf (float __x) noexcept (true); extern float __sinf (float __x) noexcept (true); 900171: 900171: extern float tanf (float __x) noexcept (true); extern float __tanf (float __x) noexcept (true); 900171: 900171: 900171: 900171: 900171: extern float coshf (float __x) noexcept (true); extern float __coshf (float __x) noexcept (true); 900171: 900171: extern float sinhf (float __x) noexcept (true); extern float __sinhf (float __x) noexcept (true); 900171: 900171: extern float tanhf (float __x) noexcept (true); extern float __tanhf (float __x) noexcept (true); 900171: 900171: 900171: 900171: extern void sincosf (float __x, float *__sinx, float *__cosx) noexcept (true); extern void __sincosf (float __x, float *__sinx, float *__cosx) noexcept (true) 900171: ; 900171: 900171: 900171: 900171: 900171: extern float acoshf (float __x) noexcept (true); extern float __acoshf (float __x) noexcept (true); 900171: 900171: extern float asinhf (float __x) noexcept (true); extern float __asinhf (float __x) noexcept (true); 900171: 900171: extern float atanhf (float __x) noexcept (true); extern float __atanhf (float __x) noexcept (true); 900171: 900171: 900171: 900171: 900171: 900171: extern float expf (float __x) noexcept (true); extern float __expf (float __x) noexcept (true); 900171: 900171: 900171: extern float frexpf (float __x, int *__exponent) noexcept (true); extern float __frexpf (float __x, int *__exponent) noexcept (true); 900171: 900171: 900171: extern float ldexpf (float __x, int __exponent) noexcept (true); extern float __ldexpf (float __x, int __exponent) noexcept (true); 900171: 900171: 900171: extern float logf (float __x) noexcept (true); extern float __logf (float __x) noexcept (true); 900171: 900171: 900171: extern float log10f (float __x) noexcept (true); extern float __log10f (float __x) noexcept (true); 900171: 900171: 900171: extern float modff (float __x, float *__iptr) noexcept (true); extern float __modff (float __x, float *__iptr) noexcept (true) __attribute__ ((__nonnull__ (2))); 900171: 900171: 900171: 900171: extern float exp10f (float __x) noexcept (true); extern float __exp10f (float __x) noexcept (true); 900171: 900171: 900171: 900171: 900171: extern float expm1f (float __x) noexcept (true); extern float __expm1f (float __x) noexcept (true); 900171: 900171: 900171: extern float log1pf (float __x) noexcept (true); extern float __log1pf (float __x) noexcept (true); 900171: 900171: 900171: extern float logbf (float __x) noexcept (true); extern float __logbf (float __x) noexcept (true); 900171: 900171: 900171: 900171: 900171: extern float exp2f (float __x) noexcept (true); extern float __exp2f (float __x) noexcept (true); 900171: 900171: 900171: extern float log2f (float __x) noexcept (true); extern float __log2f (float __x) noexcept (true); 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern float powf (float __x, float __y) noexcept (true); extern float __powf (float __x, float __y) noexcept (true); 900171: 900171: 900171: extern float sqrtf (float __x) noexcept (true); extern float __sqrtf (float __x) noexcept (true); 900171: 900171: 900171: 900171: extern float hypotf (float __x, float __y) noexcept (true); extern float __hypotf (float __x, float __y) noexcept (true); 900171: 900171: 900171: 900171: 900171: extern float cbrtf (float __x) noexcept (true); extern float __cbrtf (float __x) noexcept (true); 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern float ceilf (float __x) noexcept (true) __attribute__ ((__const__)); extern float __ceilf (float __x) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: extern float fabsf (float __x) noexcept (true) __attribute__ ((__const__)); extern float __fabsf (float __x) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: extern float floorf (float __x) noexcept (true) __attribute__ ((__const__)); extern float __floorf (float __x) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: extern float fmodf (float __x, float __y) noexcept (true); extern float __fmodf (float __x, float __y) noexcept (true); 900171: # 177 "/usr/aarch64-linux-gnu/include/bits/mathcalls.h" 3 900171: extern int isinff (float __value) noexcept (true) 900171: __attribute__ ((__const__)); 900171: 900171: 900171: 900171: 900171: extern int finitef (float __value) noexcept (true) 900171: __attribute__ ((__const__)); 900171: 900171: 900171: extern float dremf (float __x, float __y) noexcept (true); extern float __dremf (float __x, float __y) noexcept (true); 900171: 900171: 900171: 900171: extern float significandf (float __x) noexcept (true); extern float __significandf (float __x) noexcept (true); 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern float copysignf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); extern float __copysignf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: 900171: 900171: extern float nanf (const char *__tagb) noexcept (true); extern float __nanf (const char *__tagb) noexcept (true); 900171: # 213 "/usr/aarch64-linux-gnu/include/bits/mathcalls.h" 3 900171: extern int isnanf (float __value) noexcept (true) 900171: __attribute__ ((__const__)); 900171: 900171: 900171: 900171: 900171: 900171: extern float j0f (float) noexcept (true); extern float __j0f (float) noexcept (true); 900171: extern float j1f (float) noexcept (true); extern float __j1f (float) noexcept (true); 900171: extern float jnf (int, float) noexcept (true); extern float __jnf (int, float) noexcept (true); 900171: extern float y0f (float) noexcept (true); extern float __y0f (float) noexcept (true); 900171: extern float y1f (float) noexcept (true); extern float __y1f (float) noexcept (true); 900171: extern float ynf (int, float) noexcept (true); extern float __ynf (int, float) noexcept (true); 900171: 900171: 900171: 900171: 900171: 900171: extern float erff (float) noexcept (true); extern float __erff (float) noexcept (true); 900171: extern float erfcf (float) noexcept (true); extern float __erfcf (float) noexcept (true); 900171: extern float lgammaf (float) noexcept (true); extern float __lgammaf (float) noexcept (true); 900171: 900171: 900171: 900171: 900171: extern float tgammaf (float) noexcept (true); extern float __tgammaf (float) noexcept (true); 900171: 900171: 900171: 900171: 900171: 900171: extern float gammaf (float) noexcept (true); extern float __gammaf (float) noexcept (true); 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern float lgammaf_r (float, int *__signgamp) noexcept (true); extern float __lgammaf_r (float, int *__signgamp) noexcept (true); 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern float rintf (float __x) noexcept (true); extern float __rintf (float __x) noexcept (true); 900171: 900171: 900171: extern float nextafterf (float __x, float __y) noexcept (true); extern float __nextafterf (float __x, float __y) noexcept (true); 900171: 900171: extern float nexttowardf (float __x, long double __y) noexcept (true); extern float __nexttowardf (float __x, long double __y) noexcept (true); 900171: 900171: 900171: 900171: 900171: extern float nextdownf (float __x) noexcept (true); extern float __nextdownf (float __x) noexcept (true); 900171: 900171: extern float nextupf (float __x) noexcept (true); extern float __nextupf (float __x) noexcept (true); 900171: 900171: 900171: 900171: extern float remainderf (float __x, float __y) noexcept (true); extern float __remainderf (float __x, float __y) noexcept (true); 900171: 900171: 900171: 900171: extern float scalbnf (float __x, int __n) noexcept (true); extern float __scalbnf (float __x, int __n) noexcept (true); 900171: 900171: 900171: 900171: extern int ilogbf (float __x) noexcept (true); extern int __ilogbf (float __x) noexcept (true); 900171: 900171: 900171: 900171: 900171: extern long int llogbf (float __x) noexcept (true); extern long int __llogbf (float __x) noexcept (true); 900171: 900171: 900171: 900171: 900171: extern float scalblnf (float __x, long int __n) noexcept (true); extern float __scalblnf (float __x, long int __n) noexcept (true); 900171: 900171: 900171: 900171: extern float nearbyintf (float __x) noexcept (true); extern float __nearbyintf (float __x) noexcept (true); 900171: 900171: 900171: 900171: extern float roundf (float __x) noexcept (true) __attribute__ ((__const__)); extern float __roundf (float __x) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: 900171: extern float truncf (float __x) noexcept (true) __attribute__ ((__const__)); extern float __truncf (float __x) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: 900171: 900171: extern float remquof (float __x, float __y, int *__quo) noexcept (true); extern float __remquof (float __x, float __y, int *__quo) noexcept (true); 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern long int lrintf (float __x) noexcept (true); extern long int __lrintf (float __x) noexcept (true); 900171: __extension__ 900171: extern long long int llrintf (float __x) noexcept (true); extern long long int __llrintf (float __x) noexcept (true); 900171: 900171: 900171: 900171: extern long int lroundf (float __x) noexcept (true); extern long int __lroundf (float __x) noexcept (true); 900171: __extension__ 900171: extern long long int llroundf (float __x) noexcept (true); extern long long int __llroundf (float __x) noexcept (true); 900171: 900171: 900171: 900171: extern float fdimf (float __x, float __y) noexcept (true); extern float __fdimf (float __x, float __y) noexcept (true); 900171: 900171: 900171: 900171: extern float fmaxf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); extern float __fmaxf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: extern float fminf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); extern float __fminf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: 900171: extern float fmaf (float __x, float __y, float __z) noexcept (true); extern float __fmaf (float __x, float __y, float __z) noexcept (true); 900171: 900171: 900171: 900171: 900171: extern float roundevenf (float __x) noexcept (true) __attribute__ ((__const__)); extern float __roundevenf (float __x) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: 900171: extern __intmax_t fromfpf (float __x, int __round, unsigned int __width) noexcept (true); extern __intmax_t __fromfpf (float __x, int __round, unsigned int __width) noexcept (true) 900171: ; 900171: 900171: 900171: 900171: extern __uintmax_t ufromfpf (float __x, int __round, unsigned int __width) noexcept (true); extern __uintmax_t __ufromfpf (float __x, int __round, unsigned int __width) noexcept (true) 900171: ; 900171: 900171: 900171: 900171: 900171: extern __intmax_t fromfpxf (float __x, int __round, unsigned int __width) noexcept (true); extern __intmax_t __fromfpxf (float __x, int __round, unsigned int __width) noexcept (true) 900171: ; 900171: 900171: 900171: 900171: 900171: extern __uintmax_t ufromfpxf (float __x, int __round, unsigned int __width) noexcept (true); extern __uintmax_t __ufromfpxf (float __x, int __round, unsigned int __width) noexcept (true) 900171: ; 900171: 900171: 900171: extern int canonicalizef (float *__cx, const float *__x) noexcept (true); 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern float fmaxmagf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); extern float __fmaxmagf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: extern float fminmagf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); extern float __fminmagf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: 900171: 900171: extern float fmaximumf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); extern float __fmaximumf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: extern float fminimumf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); extern float __fminimumf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: extern float fmaximum_numf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); extern float __fmaximum_numf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: extern float fminimum_numf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); extern float __fminimum_numf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: extern float fmaximum_magf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); extern float __fmaximum_magf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: extern float fminimum_magf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); extern float __fminimum_magf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: extern float fmaximum_mag_numf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); extern float __fmaximum_mag_numf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: extern float fminimum_mag_numf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); extern float __fminimum_mag_numf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: 900171: 900171: extern int totalorderf (const float *__x, const float *__y) noexcept (true) 900171: 900171: __attribute__ ((__pure__)); 900171: 900171: 900171: extern int totalordermagf (const float *__x, const float *__y) noexcept (true) 900171: 900171: __attribute__ ((__pure__)); 900171: 900171: 900171: extern float getpayloadf (const float *__x) noexcept (true); extern float __getpayloadf (const float *__x) noexcept (true); 900171: 900171: 900171: extern int setpayloadf (float *__x, float __payload) noexcept (true); 900171: 900171: 900171: extern int setpayloadsigf (float *__x, float __payload) noexcept (true); 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern float scalbf (float __x, float __n) noexcept (true); extern float __scalbf (float __x, float __n) noexcept (true); 900171: # 331 "/usr/aarch64-linux-gnu/include/math.h" 2 3 900171: # 398 "/usr/aarch64-linux-gnu/include/math.h" 3 900171: # 1 "/usr/aarch64-linux-gnu/include/bits/mathcalls-helper-functions.h" 1 3 900171: # 20 "/usr/aarch64-linux-gnu/include/bits/mathcalls-helper-functions.h" 3 900171: extern int __fpclassifyl (long double __value) noexcept (true) 900171: __attribute__ ((__const__)); 900171: 900171: 900171: extern int __signbitl (long double __value) noexcept (true) 900171: __attribute__ ((__const__)); 900171: 900171: 900171: 900171: extern int __isinfl (long double __value) noexcept (true) 900171: __attribute__ ((__const__)); 900171: 900171: 900171: extern int __finitel (long double __value) noexcept (true) 900171: __attribute__ ((__const__)); 900171: 900171: 900171: extern int __isnanl (long double __value) noexcept (true) 900171: __attribute__ ((__const__)); 900171: 900171: 900171: extern int __iseqsigl (long double __x, long double __y) noexcept (true); 900171: 900171: 900171: extern int __issignalingl (long double __value) noexcept (true) 900171: __attribute__ ((__const__)); 900171: # 399 "/usr/aarch64-linux-gnu/include/math.h" 2 3 900171: # 1 "/usr/aarch64-linux-gnu/include/bits/mathcalls.h" 1 3 900171: # 53 "/usr/aarch64-linux-gnu/include/bits/mathcalls.h" 3 900171: extern long double acosl (long double __x) noexcept (true); extern long double __acosl (long double __x) noexcept (true); 900171: 900171: extern long double asinl (long double __x) noexcept (true); extern long double __asinl (long double __x) noexcept (true); 900171: 900171: extern long double atanl (long double __x) noexcept (true); extern long double __atanl (long double __x) noexcept (true); 900171: 900171: extern long double atan2l (long double __y, long double __x) noexcept (true); extern long double __atan2l (long double __y, long double __x) noexcept (true); 900171: 900171: 900171: extern long double cosl (long double __x) noexcept (true); extern long double __cosl (long double __x) noexcept (true); 900171: 900171: extern long double sinl (long double __x) noexcept (true); extern long double __sinl (long double __x) noexcept (true); 900171: 900171: extern long double tanl (long double __x) noexcept (true); extern long double __tanl (long double __x) noexcept (true); 900171: 900171: 900171: 900171: 900171: extern long double coshl (long double __x) noexcept (true); extern long double __coshl (long double __x) noexcept (true); 900171: 900171: extern long double sinhl (long double __x) noexcept (true); extern long double __sinhl (long double __x) noexcept (true); 900171: 900171: extern long double tanhl (long double __x) noexcept (true); extern long double __tanhl (long double __x) noexcept (true); 900171: 900171: 900171: 900171: extern void sincosl (long double __x, long double *__sinx, long double *__cosx) noexcept (true); extern void __sincosl (long double __x, long double *__sinx, long double *__cosx) noexcept (true) 900171: ; 900171: 900171: 900171: 900171: 900171: extern long double acoshl (long double __x) noexcept (true); extern long double __acoshl (long double __x) noexcept (true); 900171: 900171: extern long double asinhl (long double __x) noexcept (true); extern long double __asinhl (long double __x) noexcept (true); 900171: 900171: extern long double atanhl (long double __x) noexcept (true); extern long double __atanhl (long double __x) noexcept (true); 900171: 900171: 900171: 900171: 900171: 900171: extern long double expl (long double __x) noexcept (true); extern long double __expl (long double __x) noexcept (true); 900171: 900171: 900171: extern long double frexpl (long double __x, int *__exponent) noexcept (true); extern long double __frexpl (long double __x, int *__exponent) noexcept (true); 900171: 900171: 900171: extern long double ldexpl (long double __x, int __exponent) noexcept (true); extern long double __ldexpl (long double __x, int __exponent) noexcept (true); 900171: 900171: 900171: extern long double logl (long double __x) noexcept (true); extern long double __logl (long double __x) noexcept (true); 900171: 900171: 900171: extern long double log10l (long double __x) noexcept (true); extern long double __log10l (long double __x) noexcept (true); 900171: 900171: 900171: extern long double modfl (long double __x, long double *__iptr) noexcept (true); extern long double __modfl (long double __x, long double *__iptr) noexcept (true) __attribute__ ((__nonnull__ (2))); 900171: 900171: 900171: 900171: extern long double exp10l (long double __x) noexcept (true); extern long double __exp10l (long double __x) noexcept (true); 900171: 900171: 900171: 900171: 900171: extern long double expm1l (long double __x) noexcept (true); extern long double __expm1l (long double __x) noexcept (true); 900171: 900171: 900171: extern long double log1pl (long double __x) noexcept (true); extern long double __log1pl (long double __x) noexcept (true); 900171: 900171: 900171: extern long double logbl (long double __x) noexcept (true); extern long double __logbl (long double __x) noexcept (true); 900171: 900171: 900171: 900171: 900171: extern long double exp2l (long double __x) noexcept (true); extern long double __exp2l (long double __x) noexcept (true); 900171: 900171: 900171: extern long double log2l (long double __x) noexcept (true); extern long double __log2l (long double __x) noexcept (true); 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern long double powl (long double __x, long double __y) noexcept (true); extern long double __powl (long double __x, long double __y) noexcept (true); 900171: 900171: 900171: extern long double sqrtl (long double __x) noexcept (true); extern long double __sqrtl (long double __x) noexcept (true); 900171: 900171: 900171: 900171: extern long double hypotl (long double __x, long double __y) noexcept (true); extern long double __hypotl (long double __x, long double __y) noexcept (true); 900171: 900171: 900171: 900171: 900171: extern long double cbrtl (long double __x) noexcept (true); extern long double __cbrtl (long double __x) noexcept (true); 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern long double ceill (long double __x) noexcept (true) __attribute__ ((__const__)); extern long double __ceill (long double __x) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: extern long double fabsl (long double __x) noexcept (true) __attribute__ ((__const__)); extern long double __fabsl (long double __x) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: extern long double floorl (long double __x) noexcept (true) __attribute__ ((__const__)); extern long double __floorl (long double __x) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: extern long double fmodl (long double __x, long double __y) noexcept (true); extern long double __fmodl (long double __x, long double __y) noexcept (true); 900171: # 177 "/usr/aarch64-linux-gnu/include/bits/mathcalls.h" 3 900171: extern int isinfl (long double __value) noexcept (true) 900171: __attribute__ ((__const__)); 900171: 900171: 900171: 900171: 900171: extern int finitel (long double __value) noexcept (true) 900171: __attribute__ ((__const__)); 900171: 900171: 900171: extern long double dreml (long double __x, long double __y) noexcept (true); extern long double __dreml (long double __x, long double __y) noexcept (true); 900171: 900171: 900171: 900171: extern long double significandl (long double __x) noexcept (true); extern long double __significandl (long double __x) noexcept (true); 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern long double copysignl (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); extern long double __copysignl (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: 900171: 900171: extern long double nanl (const char *__tagb) noexcept (true); extern long double __nanl (const char *__tagb) noexcept (true); 900171: # 213 "/usr/aarch64-linux-gnu/include/bits/mathcalls.h" 3 900171: extern int isnanl (long double __value) noexcept (true) 900171: __attribute__ ((__const__)); 900171: 900171: 900171: 900171: 900171: 900171: extern long double j0l (long double) noexcept (true); extern long double __j0l (long double) noexcept (true); 900171: extern long double j1l (long double) noexcept (true); extern long double __j1l (long double) noexcept (true); 900171: extern long double jnl (int, long double) noexcept (true); extern long double __jnl (int, long double) noexcept (true); 900171: extern long double y0l (long double) noexcept (true); extern long double __y0l (long double) noexcept (true); 900171: extern long double y1l (long double) noexcept (true); extern long double __y1l (long double) noexcept (true); 900171: extern long double ynl (int, long double) noexcept (true); extern long double __ynl (int, long double) noexcept (true); 900171: 900171: 900171: 900171: 900171: 900171: extern long double erfl (long double) noexcept (true); extern long double __erfl (long double) noexcept (true); 900171: extern long double erfcl (long double) noexcept (true); extern long double __erfcl (long double) noexcept (true); 900171: extern long double lgammal (long double) noexcept (true); extern long double __lgammal (long double) noexcept (true); 900171: 900171: 900171: 900171: 900171: extern long double tgammal (long double) noexcept (true); extern long double __tgammal (long double) noexcept (true); 900171: 900171: 900171: 900171: 900171: 900171: extern long double gammal (long double) noexcept (true); extern long double __gammal (long double) noexcept (true); 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern long double lgammal_r (long double, int *__signgamp) noexcept (true); extern long double __lgammal_r (long double, int *__signgamp) noexcept (true); 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern long double rintl (long double __x) noexcept (true); extern long double __rintl (long double __x) noexcept (true); 900171: 900171: 900171: extern long double nextafterl (long double __x, long double __y) noexcept (true); extern long double __nextafterl (long double __x, long double __y) noexcept (true); 900171: 900171: extern long double nexttowardl (long double __x, long double __y) noexcept (true); extern long double __nexttowardl (long double __x, long double __y) noexcept (true); 900171: 900171: 900171: 900171: 900171: extern long double nextdownl (long double __x) noexcept (true); extern long double __nextdownl (long double __x) noexcept (true); 900171: 900171: extern long double nextupl (long double __x) noexcept (true); extern long double __nextupl (long double __x) noexcept (true); 900171: 900171: 900171: 900171: extern long double remainderl (long double __x, long double __y) noexcept (true); extern long double __remainderl (long double __x, long double __y) noexcept (true); 900171: 900171: 900171: 900171: extern long double scalbnl (long double __x, int __n) noexcept (true); extern long double __scalbnl (long double __x, int __n) noexcept (true); 900171: 900171: 900171: 900171: extern int ilogbl (long double __x) noexcept (true); extern int __ilogbl (long double __x) noexcept (true); 900171: 900171: 900171: 900171: 900171: extern long int llogbl (long double __x) noexcept (true); extern long int __llogbl (long double __x) noexcept (true); 900171: 900171: 900171: 900171: 900171: extern long double scalblnl (long double __x, long int __n) noexcept (true); extern long double __scalblnl (long double __x, long int __n) noexcept (true); 900171: 900171: 900171: 900171: extern long double nearbyintl (long double __x) noexcept (true); extern long double __nearbyintl (long double __x) noexcept (true); 900171: 900171: 900171: 900171: extern long double roundl (long double __x) noexcept (true) __attribute__ ((__const__)); extern long double __roundl (long double __x) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: 900171: extern long double truncl (long double __x) noexcept (true) __attribute__ ((__const__)); extern long double __truncl (long double __x) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: 900171: 900171: extern long double remquol (long double __x, long double __y, int *__quo) noexcept (true); extern long double __remquol (long double __x, long double __y, int *__quo) noexcept (true); 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern long int lrintl (long double __x) noexcept (true); extern long int __lrintl (long double __x) noexcept (true); 900171: __extension__ 900171: extern long long int llrintl (long double __x) noexcept (true); extern long long int __llrintl (long double __x) noexcept (true); 900171: 900171: 900171: 900171: extern long int lroundl (long double __x) noexcept (true); extern long int __lroundl (long double __x) noexcept (true); 900171: __extension__ 900171: extern long long int llroundl (long double __x) noexcept (true); extern long long int __llroundl (long double __x) noexcept (true); 900171: 900171: 900171: 900171: extern long double fdiml (long double __x, long double __y) noexcept (true); extern long double __fdiml (long double __x, long double __y) noexcept (true); 900171: 900171: 900171: 900171: extern long double fmaxl (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); extern long double __fmaxl (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: extern long double fminl (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); extern long double __fminl (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: 900171: extern long double fmal (long double __x, long double __y, long double __z) noexcept (true); extern long double __fmal (long double __x, long double __y, long double __z) noexcept (true); 900171: 900171: 900171: 900171: 900171: extern long double roundevenl (long double __x) noexcept (true) __attribute__ ((__const__)); extern long double __roundevenl (long double __x) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: 900171: extern __intmax_t fromfpl (long double __x, int __round, unsigned int __width) noexcept (true); extern __intmax_t __fromfpl (long double __x, int __round, unsigned int __width) noexcept (true) 900171: ; 900171: 900171: 900171: 900171: extern __uintmax_t ufromfpl (long double __x, int __round, unsigned int __width) noexcept (true); extern __uintmax_t __ufromfpl (long double __x, int __round, unsigned int __width) noexcept (true) 900171: ; 900171: 900171: 900171: 900171: 900171: extern __intmax_t fromfpxl (long double __x, int __round, unsigned int __width) noexcept (true); extern __intmax_t __fromfpxl (long double __x, int __round, unsigned int __width) noexcept (true) 900171: ; 900171: 900171: 900171: 900171: 900171: extern __uintmax_t ufromfpxl (long double __x, int __round, unsigned int __width) noexcept (true); extern __uintmax_t __ufromfpxl (long double __x, int __round, unsigned int __width) noexcept (true) 900171: ; 900171: 900171: 900171: extern int canonicalizel (long double *__cx, const long double *__x) noexcept (true); 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern long double fmaxmagl (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); extern long double __fmaxmagl (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: extern long double fminmagl (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); extern long double __fminmagl (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: 900171: 900171: extern long double fmaximuml (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); extern long double __fmaximuml (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: extern long double fminimuml (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); extern long double __fminimuml (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: extern long double fmaximum_numl (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); extern long double __fmaximum_numl (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: extern long double fminimum_numl (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); extern long double __fminimum_numl (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: extern long double fmaximum_magl (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); extern long double __fmaximum_magl (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: extern long double fminimum_magl (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); extern long double __fminimum_magl (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: extern long double fmaximum_mag_numl (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); extern long double __fmaximum_mag_numl (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: extern long double fminimum_mag_numl (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); extern long double __fminimum_mag_numl (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: 900171: 900171: extern int totalorderl (const long double *__x, const long double *__y) noexcept (true) 900171: 900171: __attribute__ ((__pure__)); 900171: 900171: 900171: extern int totalordermagl (const long double *__x, const long double *__y) noexcept (true) 900171: 900171: __attribute__ ((__pure__)); 900171: 900171: 900171: extern long double getpayloadl (const long double *__x) noexcept (true); extern long double __getpayloadl (const long double *__x) noexcept (true); 900171: 900171: 900171: extern int setpayloadl (long double *__x, long double __payload) noexcept (true); 900171: 900171: 900171: extern int setpayloadsigl (long double *__x, long double __payload) noexcept (true); 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern long double scalbl (long double __x, long double __n) noexcept (true); extern long double __scalbl (long double __x, long double __n) noexcept (true); 900171: # 400 "/usr/aarch64-linux-gnu/include/math.h" 2 3 900171: # 450 "/usr/aarch64-linux-gnu/include/math.h" 3 900171: # 1 "/usr/aarch64-linux-gnu/include/bits/mathcalls.h" 1 3 900171: # 53 "/usr/aarch64-linux-gnu/include/bits/mathcalls.h" 3 900171: extern _Float32 acosf32 (_Float32 __x) noexcept (true); extern _Float32 __acosf32 (_Float32 __x) noexcept (true); 900171: 900171: extern _Float32 asinf32 (_Float32 __x) noexcept (true); extern _Float32 __asinf32 (_Float32 __x) noexcept (true); 900171: 900171: extern _Float32 atanf32 (_Float32 __x) noexcept (true); extern _Float32 __atanf32 (_Float32 __x) noexcept (true); 900171: 900171: extern _Float32 atan2f32 (_Float32 __y, _Float32 __x) noexcept (true); extern _Float32 __atan2f32 (_Float32 __y, _Float32 __x) noexcept (true); 900171: 900171: 900171: extern _Float32 cosf32 (_Float32 __x) noexcept (true); extern _Float32 __cosf32 (_Float32 __x) noexcept (true); 900171: 900171: extern _Float32 sinf32 (_Float32 __x) noexcept (true); extern _Float32 __sinf32 (_Float32 __x) noexcept (true); 900171: 900171: extern _Float32 tanf32 (_Float32 __x) noexcept (true); extern _Float32 __tanf32 (_Float32 __x) noexcept (true); 900171: 900171: 900171: 900171: 900171: extern _Float32 coshf32 (_Float32 __x) noexcept (true); extern _Float32 __coshf32 (_Float32 __x) noexcept (true); 900171: 900171: extern _Float32 sinhf32 (_Float32 __x) noexcept (true); extern _Float32 __sinhf32 (_Float32 __x) noexcept (true); 900171: 900171: extern _Float32 tanhf32 (_Float32 __x) noexcept (true); extern _Float32 __tanhf32 (_Float32 __x) noexcept (true); 900171: 900171: 900171: 900171: extern void sincosf32 (_Float32 __x, _Float32 *__sinx, _Float32 *__cosx) noexcept (true); extern void __sincosf32 (_Float32 __x, _Float32 *__sinx, _Float32 *__cosx) noexcept (true) 900171: ; 900171: 900171: 900171: 900171: 900171: extern _Float32 acoshf32 (_Float32 __x) noexcept (true); extern _Float32 __acoshf32 (_Float32 __x) noexcept (true); 900171: 900171: extern _Float32 asinhf32 (_Float32 __x) noexcept (true); extern _Float32 __asinhf32 (_Float32 __x) noexcept (true); 900171: 900171: extern _Float32 atanhf32 (_Float32 __x) noexcept (true); extern _Float32 __atanhf32 (_Float32 __x) noexcept (true); 900171: 900171: 900171: 900171: 900171: 900171: extern _Float32 expf32 (_Float32 __x) noexcept (true); extern _Float32 __expf32 (_Float32 __x) noexcept (true); 900171: 900171: 900171: extern _Float32 frexpf32 (_Float32 __x, int *__exponent) noexcept (true); extern _Float32 __frexpf32 (_Float32 __x, int *__exponent) noexcept (true); 900171: 900171: 900171: extern _Float32 ldexpf32 (_Float32 __x, int __exponent) noexcept (true); extern _Float32 __ldexpf32 (_Float32 __x, int __exponent) noexcept (true); 900171: 900171: 900171: extern _Float32 logf32 (_Float32 __x) noexcept (true); extern _Float32 __logf32 (_Float32 __x) noexcept (true); 900171: 900171: 900171: extern _Float32 log10f32 (_Float32 __x) noexcept (true); extern _Float32 __log10f32 (_Float32 __x) noexcept (true); 900171: 900171: 900171: extern _Float32 modff32 (_Float32 __x, _Float32 *__iptr) noexcept (true); extern _Float32 __modff32 (_Float32 __x, _Float32 *__iptr) noexcept (true) __attribute__ ((__nonnull__ (2))); 900171: 900171: 900171: 900171: extern _Float32 exp10f32 (_Float32 __x) noexcept (true); extern _Float32 __exp10f32 (_Float32 __x) noexcept (true); 900171: 900171: 900171: 900171: 900171: extern _Float32 expm1f32 (_Float32 __x) noexcept (true); extern _Float32 __expm1f32 (_Float32 __x) noexcept (true); 900171: 900171: 900171: extern _Float32 log1pf32 (_Float32 __x) noexcept (true); extern _Float32 __log1pf32 (_Float32 __x) noexcept (true); 900171: 900171: 900171: extern _Float32 logbf32 (_Float32 __x) noexcept (true); extern _Float32 __logbf32 (_Float32 __x) noexcept (true); 900171: 900171: 900171: 900171: 900171: extern _Float32 exp2f32 (_Float32 __x) noexcept (true); extern _Float32 __exp2f32 (_Float32 __x) noexcept (true); 900171: 900171: 900171: extern _Float32 log2f32 (_Float32 __x) noexcept (true); extern _Float32 __log2f32 (_Float32 __x) noexcept (true); 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern _Float32 powf32 (_Float32 __x, _Float32 __y) noexcept (true); extern _Float32 __powf32 (_Float32 __x, _Float32 __y) noexcept (true); 900171: 900171: 900171: extern _Float32 sqrtf32 (_Float32 __x) noexcept (true); extern _Float32 __sqrtf32 (_Float32 __x) noexcept (true); 900171: 900171: 900171: 900171: extern _Float32 hypotf32 (_Float32 __x, _Float32 __y) noexcept (true); extern _Float32 __hypotf32 (_Float32 __x, _Float32 __y) noexcept (true); 900171: 900171: 900171: 900171: 900171: extern _Float32 cbrtf32 (_Float32 __x) noexcept (true); extern _Float32 __cbrtf32 (_Float32 __x) noexcept (true); 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern _Float32 ceilf32 (_Float32 __x) noexcept (true) __attribute__ ((__const__)); extern _Float32 __ceilf32 (_Float32 __x) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: extern _Float32 fabsf32 (_Float32 __x) noexcept (true) __attribute__ ((__const__)); extern _Float32 __fabsf32 (_Float32 __x) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: extern _Float32 floorf32 (_Float32 __x) noexcept (true) __attribute__ ((__const__)); extern _Float32 __floorf32 (_Float32 __x) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: extern _Float32 fmodf32 (_Float32 __x, _Float32 __y) noexcept (true); extern _Float32 __fmodf32 (_Float32 __x, _Float32 __y) noexcept (true); 900171: # 198 "/usr/aarch64-linux-gnu/include/bits/mathcalls.h" 3 900171: extern _Float32 copysignf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); extern _Float32 __copysignf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: 900171: 900171: extern _Float32 nanf32 (const char *__tagb) noexcept (true); extern _Float32 __nanf32 (const char *__tagb) noexcept (true); 900171: # 220 "/usr/aarch64-linux-gnu/include/bits/mathcalls.h" 3 900171: extern _Float32 j0f32 (_Float32) noexcept (true); extern _Float32 __j0f32 (_Float32) noexcept (true); 900171: extern _Float32 j1f32 (_Float32) noexcept (true); extern _Float32 __j1f32 (_Float32) noexcept (true); 900171: extern _Float32 jnf32 (int, _Float32) noexcept (true); extern _Float32 __jnf32 (int, _Float32) noexcept (true); 900171: extern _Float32 y0f32 (_Float32) noexcept (true); extern _Float32 __y0f32 (_Float32) noexcept (true); 900171: extern _Float32 y1f32 (_Float32) noexcept (true); extern _Float32 __y1f32 (_Float32) noexcept (true); 900171: extern _Float32 ynf32 (int, _Float32) noexcept (true); extern _Float32 __ynf32 (int, _Float32) noexcept (true); 900171: 900171: 900171: 900171: 900171: 900171: extern _Float32 erff32 (_Float32) noexcept (true); extern _Float32 __erff32 (_Float32) noexcept (true); 900171: extern _Float32 erfcf32 (_Float32) noexcept (true); extern _Float32 __erfcf32 (_Float32) noexcept (true); 900171: extern _Float32 lgammaf32 (_Float32) noexcept (true); extern _Float32 __lgammaf32 (_Float32) noexcept (true); 900171: 900171: 900171: 900171: 900171: extern _Float32 tgammaf32 (_Float32) noexcept (true); extern _Float32 __tgammaf32 (_Float32) noexcept (true); 900171: # 252 "/usr/aarch64-linux-gnu/include/bits/mathcalls.h" 3 900171: extern _Float32 lgammaf32_r (_Float32, int *__signgamp) noexcept (true); extern _Float32 __lgammaf32_r (_Float32, int *__signgamp) noexcept (true); 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern _Float32 rintf32 (_Float32 __x) noexcept (true); extern _Float32 __rintf32 (_Float32 __x) noexcept (true); 900171: 900171: 900171: extern _Float32 nextafterf32 (_Float32 __x, _Float32 __y) noexcept (true); extern _Float32 __nextafterf32 (_Float32 __x, _Float32 __y) noexcept (true); 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern _Float32 nextdownf32 (_Float32 __x) noexcept (true); extern _Float32 __nextdownf32 (_Float32 __x) noexcept (true); 900171: 900171: extern _Float32 nextupf32 (_Float32 __x) noexcept (true); extern _Float32 __nextupf32 (_Float32 __x) noexcept (true); 900171: 900171: 900171: 900171: extern _Float32 remainderf32 (_Float32 __x, _Float32 __y) noexcept (true); extern _Float32 __remainderf32 (_Float32 __x, _Float32 __y) noexcept (true); 900171: 900171: 900171: 900171: extern _Float32 scalbnf32 (_Float32 __x, int __n) noexcept (true); extern _Float32 __scalbnf32 (_Float32 __x, int __n) noexcept (true); 900171: 900171: 900171: 900171: extern int ilogbf32 (_Float32 __x) noexcept (true); extern int __ilogbf32 (_Float32 __x) noexcept (true); 900171: 900171: 900171: 900171: 900171: extern long int llogbf32 (_Float32 __x) noexcept (true); extern long int __llogbf32 (_Float32 __x) noexcept (true); 900171: 900171: 900171: 900171: 900171: extern _Float32 scalblnf32 (_Float32 __x, long int __n) noexcept (true); extern _Float32 __scalblnf32 (_Float32 __x, long int __n) noexcept (true); 900171: 900171: 900171: 900171: extern _Float32 nearbyintf32 (_Float32 __x) noexcept (true); extern _Float32 __nearbyintf32 (_Float32 __x) noexcept (true); 900171: 900171: 900171: 900171: extern _Float32 roundf32 (_Float32 __x) noexcept (true) __attribute__ ((__const__)); extern _Float32 __roundf32 (_Float32 __x) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: 900171: extern _Float32 truncf32 (_Float32 __x) noexcept (true) __attribute__ ((__const__)); extern _Float32 __truncf32 (_Float32 __x) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: 900171: 900171: extern _Float32 remquof32 (_Float32 __x, _Float32 __y, int *__quo) noexcept (true); extern _Float32 __remquof32 (_Float32 __x, _Float32 __y, int *__quo) noexcept (true); 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern long int lrintf32 (_Float32 __x) noexcept (true); extern long int __lrintf32 (_Float32 __x) noexcept (true); 900171: __extension__ 900171: extern long long int llrintf32 (_Float32 __x) noexcept (true); extern long long int __llrintf32 (_Float32 __x) noexcept (true); 900171: 900171: 900171: 900171: extern long int lroundf32 (_Float32 __x) noexcept (true); extern long int __lroundf32 (_Float32 __x) noexcept (true); 900171: __extension__ 900171: extern long long int llroundf32 (_Float32 __x) noexcept (true); extern long long int __llroundf32 (_Float32 __x) noexcept (true); 900171: 900171: 900171: 900171: extern _Float32 fdimf32 (_Float32 __x, _Float32 __y) noexcept (true); extern _Float32 __fdimf32 (_Float32 __x, _Float32 __y) noexcept (true); 900171: 900171: 900171: 900171: extern _Float32 fmaxf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); extern _Float32 __fmaxf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: extern _Float32 fminf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); extern _Float32 __fminf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: 900171: extern _Float32 fmaf32 (_Float32 __x, _Float32 __y, _Float32 __z) noexcept (true); extern _Float32 __fmaf32 (_Float32 __x, _Float32 __y, _Float32 __z) noexcept (true); 900171: 900171: 900171: 900171: 900171: extern _Float32 roundevenf32 (_Float32 __x) noexcept (true) __attribute__ ((__const__)); extern _Float32 __roundevenf32 (_Float32 __x) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: 900171: extern __intmax_t fromfpf32 (_Float32 __x, int __round, unsigned int __width) noexcept (true); extern __intmax_t __fromfpf32 (_Float32 __x, int __round, unsigned int __width) noexcept (true) 900171: ; 900171: 900171: 900171: 900171: extern __uintmax_t ufromfpf32 (_Float32 __x, int __round, unsigned int __width) noexcept (true); extern __uintmax_t __ufromfpf32 (_Float32 __x, int __round, unsigned int __width) noexcept (true) 900171: ; 900171: 900171: 900171: 900171: 900171: extern __intmax_t fromfpxf32 (_Float32 __x, int __round, unsigned int __width) noexcept (true); extern __intmax_t __fromfpxf32 (_Float32 __x, int __round, unsigned int __width) noexcept (true) 900171: ; 900171: 900171: 900171: 900171: 900171: extern __uintmax_t ufromfpxf32 (_Float32 __x, int __round, unsigned int __width) noexcept (true); extern __uintmax_t __ufromfpxf32 (_Float32 __x, int __round, unsigned int __width) noexcept (true) 900171: ; 900171: 900171: 900171: extern int canonicalizef32 (_Float32 *__cx, const _Float32 *__x) noexcept (true); 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern _Float32 fmaxmagf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); extern _Float32 __fmaxmagf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: extern _Float32 fminmagf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); extern _Float32 __fminmagf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: 900171: 900171: extern _Float32 fmaximumf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); extern _Float32 __fmaximumf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: extern _Float32 fminimumf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); extern _Float32 __fminimumf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: extern _Float32 fmaximum_numf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); extern _Float32 __fmaximum_numf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: extern _Float32 fminimum_numf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); extern _Float32 __fminimum_numf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: extern _Float32 fmaximum_magf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); extern _Float32 __fmaximum_magf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: extern _Float32 fminimum_magf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); extern _Float32 __fminimum_magf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: extern _Float32 fmaximum_mag_numf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); extern _Float32 __fmaximum_mag_numf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: extern _Float32 fminimum_mag_numf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); extern _Float32 __fminimum_mag_numf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: 900171: 900171: extern int totalorderf32 (const _Float32 *__x, const _Float32 *__y) noexcept (true) 900171: 900171: __attribute__ ((__pure__)); 900171: 900171: 900171: extern int totalordermagf32 (const _Float32 *__x, const _Float32 *__y) noexcept (true) 900171: 900171: __attribute__ ((__pure__)); 900171: 900171: 900171: extern _Float32 getpayloadf32 (const _Float32 *__x) noexcept (true); extern _Float32 __getpayloadf32 (const _Float32 *__x) noexcept (true); 900171: 900171: 900171: extern int setpayloadf32 (_Float32 *__x, _Float32 __payload) noexcept (true); 900171: 900171: 900171: extern int setpayloadsigf32 (_Float32 *__x, _Float32 __payload) noexcept (true); 900171: # 451 "/usr/aarch64-linux-gnu/include/math.h" 2 3 900171: # 467 "/usr/aarch64-linux-gnu/include/math.h" 3 900171: # 1 "/usr/aarch64-linux-gnu/include/bits/mathcalls.h" 1 3 900171: # 53 "/usr/aarch64-linux-gnu/include/bits/mathcalls.h" 3 900171: extern _Float64 acosf64 (_Float64 __x) noexcept (true); extern _Float64 __acosf64 (_Float64 __x) noexcept (true); 900171: 900171: extern _Float64 asinf64 (_Float64 __x) noexcept (true); extern _Float64 __asinf64 (_Float64 __x) noexcept (true); 900171: 900171: extern _Float64 atanf64 (_Float64 __x) noexcept (true); extern _Float64 __atanf64 (_Float64 __x) noexcept (true); 900171: 900171: extern _Float64 atan2f64 (_Float64 __y, _Float64 __x) noexcept (true); extern _Float64 __atan2f64 (_Float64 __y, _Float64 __x) noexcept (true); 900171: 900171: 900171: extern _Float64 cosf64 (_Float64 __x) noexcept (true); extern _Float64 __cosf64 (_Float64 __x) noexcept (true); 900171: 900171: extern _Float64 sinf64 (_Float64 __x) noexcept (true); extern _Float64 __sinf64 (_Float64 __x) noexcept (true); 900171: 900171: extern _Float64 tanf64 (_Float64 __x) noexcept (true); extern _Float64 __tanf64 (_Float64 __x) noexcept (true); 900171: 900171: 900171: 900171: 900171: extern _Float64 coshf64 (_Float64 __x) noexcept (true); extern _Float64 __coshf64 (_Float64 __x) noexcept (true); 900171: 900171: extern _Float64 sinhf64 (_Float64 __x) noexcept (true); extern _Float64 __sinhf64 (_Float64 __x) noexcept (true); 900171: 900171: extern _Float64 tanhf64 (_Float64 __x) noexcept (true); extern _Float64 __tanhf64 (_Float64 __x) noexcept (true); 900171: 900171: 900171: 900171: extern void sincosf64 (_Float64 __x, _Float64 *__sinx, _Float64 *__cosx) noexcept (true); extern void __sincosf64 (_Float64 __x, _Float64 *__sinx, _Float64 *__cosx) noexcept (true) 900171: ; 900171: 900171: 900171: 900171: 900171: extern _Float64 acoshf64 (_Float64 __x) noexcept (true); extern _Float64 __acoshf64 (_Float64 __x) noexcept (true); 900171: 900171: extern _Float64 asinhf64 (_Float64 __x) noexcept (true); extern _Float64 __asinhf64 (_Float64 __x) noexcept (true); 900171: 900171: extern _Float64 atanhf64 (_Float64 __x) noexcept (true); extern _Float64 __atanhf64 (_Float64 __x) noexcept (true); 900171: 900171: 900171: 900171: 900171: 900171: extern _Float64 expf64 (_Float64 __x) noexcept (true); extern _Float64 __expf64 (_Float64 __x) noexcept (true); 900171: 900171: 900171: extern _Float64 frexpf64 (_Float64 __x, int *__exponent) noexcept (true); extern _Float64 __frexpf64 (_Float64 __x, int *__exponent) noexcept (true); 900171: 900171: 900171: extern _Float64 ldexpf64 (_Float64 __x, int __exponent) noexcept (true); extern _Float64 __ldexpf64 (_Float64 __x, int __exponent) noexcept (true); 900171: 900171: 900171: extern _Float64 logf64 (_Float64 __x) noexcept (true); extern _Float64 __logf64 (_Float64 __x) noexcept (true); 900171: 900171: 900171: extern _Float64 log10f64 (_Float64 __x) noexcept (true); extern _Float64 __log10f64 (_Float64 __x) noexcept (true); 900171: 900171: 900171: extern _Float64 modff64 (_Float64 __x, _Float64 *__iptr) noexcept (true); extern _Float64 __modff64 (_Float64 __x, _Float64 *__iptr) noexcept (true) __attribute__ ((__nonnull__ (2))); 900171: 900171: 900171: 900171: extern _Float64 exp10f64 (_Float64 __x) noexcept (true); extern _Float64 __exp10f64 (_Float64 __x) noexcept (true); 900171: 900171: 900171: 900171: 900171: extern _Float64 expm1f64 (_Float64 __x) noexcept (true); extern _Float64 __expm1f64 (_Float64 __x) noexcept (true); 900171: 900171: 900171: extern _Float64 log1pf64 (_Float64 __x) noexcept (true); extern _Float64 __log1pf64 (_Float64 __x) noexcept (true); 900171: 900171: 900171: extern _Float64 logbf64 (_Float64 __x) noexcept (true); extern _Float64 __logbf64 (_Float64 __x) noexcept (true); 900171: 900171: 900171: 900171: 900171: extern _Float64 exp2f64 (_Float64 __x) noexcept (true); extern _Float64 __exp2f64 (_Float64 __x) noexcept (true); 900171: 900171: 900171: extern _Float64 log2f64 (_Float64 __x) noexcept (true); extern _Float64 __log2f64 (_Float64 __x) noexcept (true); 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern _Float64 powf64 (_Float64 __x, _Float64 __y) noexcept (true); extern _Float64 __powf64 (_Float64 __x, _Float64 __y) noexcept (true); 900171: 900171: 900171: extern _Float64 sqrtf64 (_Float64 __x) noexcept (true); extern _Float64 __sqrtf64 (_Float64 __x) noexcept (true); 900171: 900171: 900171: 900171: extern _Float64 hypotf64 (_Float64 __x, _Float64 __y) noexcept (true); extern _Float64 __hypotf64 (_Float64 __x, _Float64 __y) noexcept (true); 900171: 900171: 900171: 900171: 900171: extern _Float64 cbrtf64 (_Float64 __x) noexcept (true); extern _Float64 __cbrtf64 (_Float64 __x) noexcept (true); 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern _Float64 ceilf64 (_Float64 __x) noexcept (true) __attribute__ ((__const__)); extern _Float64 __ceilf64 (_Float64 __x) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: extern _Float64 fabsf64 (_Float64 __x) noexcept (true) __attribute__ ((__const__)); extern _Float64 __fabsf64 (_Float64 __x) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: extern _Float64 floorf64 (_Float64 __x) noexcept (true) __attribute__ ((__const__)); extern _Float64 __floorf64 (_Float64 __x) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: extern _Float64 fmodf64 (_Float64 __x, _Float64 __y) noexcept (true); extern _Float64 __fmodf64 (_Float64 __x, _Float64 __y) noexcept (true); 900171: # 198 "/usr/aarch64-linux-gnu/include/bits/mathcalls.h" 3 900171: extern _Float64 copysignf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); extern _Float64 __copysignf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: 900171: 900171: extern _Float64 nanf64 (const char *__tagb) noexcept (true); extern _Float64 __nanf64 (const char *__tagb) noexcept (true); 900171: # 220 "/usr/aarch64-linux-gnu/include/bits/mathcalls.h" 3 900171: extern _Float64 j0f64 (_Float64) noexcept (true); extern _Float64 __j0f64 (_Float64) noexcept (true); 900171: extern _Float64 j1f64 (_Float64) noexcept (true); extern _Float64 __j1f64 (_Float64) noexcept (true); 900171: extern _Float64 jnf64 (int, _Float64) noexcept (true); extern _Float64 __jnf64 (int, _Float64) noexcept (true); 900171: extern _Float64 y0f64 (_Float64) noexcept (true); extern _Float64 __y0f64 (_Float64) noexcept (true); 900171: extern _Float64 y1f64 (_Float64) noexcept (true); extern _Float64 __y1f64 (_Float64) noexcept (true); 900171: extern _Float64 ynf64 (int, _Float64) noexcept (true); extern _Float64 __ynf64 (int, _Float64) noexcept (true); 900171: 900171: 900171: 900171: 900171: 900171: extern _Float64 erff64 (_Float64) noexcept (true); extern _Float64 __erff64 (_Float64) noexcept (true); 900171: extern _Float64 erfcf64 (_Float64) noexcept (true); extern _Float64 __erfcf64 (_Float64) noexcept (true); 900171: extern _Float64 lgammaf64 (_Float64) noexcept (true); extern _Float64 __lgammaf64 (_Float64) noexcept (true); 900171: 900171: 900171: 900171: 900171: extern _Float64 tgammaf64 (_Float64) noexcept (true); extern _Float64 __tgammaf64 (_Float64) noexcept (true); 900171: # 252 "/usr/aarch64-linux-gnu/include/bits/mathcalls.h" 3 900171: extern _Float64 lgammaf64_r (_Float64, int *__signgamp) noexcept (true); extern _Float64 __lgammaf64_r (_Float64, int *__signgamp) noexcept (true); 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern _Float64 rintf64 (_Float64 __x) noexcept (true); extern _Float64 __rintf64 (_Float64 __x) noexcept (true); 900171: 900171: 900171: extern _Float64 nextafterf64 (_Float64 __x, _Float64 __y) noexcept (true); extern _Float64 __nextafterf64 (_Float64 __x, _Float64 __y) noexcept (true); 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern _Float64 nextdownf64 (_Float64 __x) noexcept (true); extern _Float64 __nextdownf64 (_Float64 __x) noexcept (true); 900171: 900171: extern _Float64 nextupf64 (_Float64 __x) noexcept (true); extern _Float64 __nextupf64 (_Float64 __x) noexcept (true); 900171: 900171: 900171: 900171: extern _Float64 remainderf64 (_Float64 __x, _Float64 __y) noexcept (true); extern _Float64 __remainderf64 (_Float64 __x, _Float64 __y) noexcept (true); 900171: 900171: 900171: 900171: extern _Float64 scalbnf64 (_Float64 __x, int __n) noexcept (true); extern _Float64 __scalbnf64 (_Float64 __x, int __n) noexcept (true); 900171: 900171: 900171: 900171: extern int ilogbf64 (_Float64 __x) noexcept (true); extern int __ilogbf64 (_Float64 __x) noexcept (true); 900171: 900171: 900171: 900171: 900171: extern long int llogbf64 (_Float64 __x) noexcept (true); extern long int __llogbf64 (_Float64 __x) noexcept (true); 900171: 900171: 900171: 900171: 900171: extern _Float64 scalblnf64 (_Float64 __x, long int __n) noexcept (true); extern _Float64 __scalblnf64 (_Float64 __x, long int __n) noexcept (true); 900171: 900171: 900171: 900171: extern _Float64 nearbyintf64 (_Float64 __x) noexcept (true); extern _Float64 __nearbyintf64 (_Float64 __x) noexcept (true); 900171: 900171: 900171: 900171: extern _Float64 roundf64 (_Float64 __x) noexcept (true) __attribute__ ((__const__)); extern _Float64 __roundf64 (_Float64 __x) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: 900171: extern _Float64 truncf64 (_Float64 __x) noexcept (true) __attribute__ ((__const__)); extern _Float64 __truncf64 (_Float64 __x) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: 900171: 900171: extern _Float64 remquof64 (_Float64 __x, _Float64 __y, int *__quo) noexcept (true); extern _Float64 __remquof64 (_Float64 __x, _Float64 __y, int *__quo) noexcept (true); 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern long int lrintf64 (_Float64 __x) noexcept (true); extern long int __lrintf64 (_Float64 __x) noexcept (true); 900171: __extension__ 900171: extern long long int llrintf64 (_Float64 __x) noexcept (true); extern long long int __llrintf64 (_Float64 __x) noexcept (true); 900171: 900171: 900171: 900171: extern long int lroundf64 (_Float64 __x) noexcept (true); extern long int __lroundf64 (_Float64 __x) noexcept (true); 900171: __extension__ 900171: extern long long int llroundf64 (_Float64 __x) noexcept (true); extern long long int __llroundf64 (_Float64 __x) noexcept (true); 900171: 900171: 900171: 900171: extern _Float64 fdimf64 (_Float64 __x, _Float64 __y) noexcept (true); extern _Float64 __fdimf64 (_Float64 __x, _Float64 __y) noexcept (true); 900171: 900171: 900171: 900171: extern _Float64 fmaxf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); extern _Float64 __fmaxf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: extern _Float64 fminf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); extern _Float64 __fminf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: 900171: extern _Float64 fmaf64 (_Float64 __x, _Float64 __y, _Float64 __z) noexcept (true); extern _Float64 __fmaf64 (_Float64 __x, _Float64 __y, _Float64 __z) noexcept (true); 900171: 900171: 900171: 900171: 900171: extern _Float64 roundevenf64 (_Float64 __x) noexcept (true) __attribute__ ((__const__)); extern _Float64 __roundevenf64 (_Float64 __x) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: 900171: extern __intmax_t fromfpf64 (_Float64 __x, int __round, unsigned int __width) noexcept (true); extern __intmax_t __fromfpf64 (_Float64 __x, int __round, unsigned int __width) noexcept (true) 900171: ; 900171: 900171: 900171: 900171: extern __uintmax_t ufromfpf64 (_Float64 __x, int __round, unsigned int __width) noexcept (true); extern __uintmax_t __ufromfpf64 (_Float64 __x, int __round, unsigned int __width) noexcept (true) 900171: ; 900171: 900171: 900171: 900171: 900171: extern __intmax_t fromfpxf64 (_Float64 __x, int __round, unsigned int __width) noexcept (true); extern __intmax_t __fromfpxf64 (_Float64 __x, int __round, unsigned int __width) noexcept (true) 900171: ; 900171: 900171: 900171: 900171: 900171: extern __uintmax_t ufromfpxf64 (_Float64 __x, int __round, unsigned int __width) noexcept (true); extern __uintmax_t __ufromfpxf64 (_Float64 __x, int __round, unsigned int __width) noexcept (true) 900171: ; 900171: 900171: 900171: extern int canonicalizef64 (_Float64 *__cx, const _Float64 *__x) noexcept (true); 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern _Float64 fmaxmagf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); extern _Float64 __fmaxmagf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: extern _Float64 fminmagf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); extern _Float64 __fminmagf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: 900171: 900171: extern _Float64 fmaximumf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); extern _Float64 __fmaximumf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: extern _Float64 fminimumf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); extern _Float64 __fminimumf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: extern _Float64 fmaximum_numf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); extern _Float64 __fmaximum_numf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: extern _Float64 fminimum_numf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); extern _Float64 __fminimum_numf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: extern _Float64 fmaximum_magf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); extern _Float64 __fmaximum_magf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: extern _Float64 fminimum_magf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); extern _Float64 __fminimum_magf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: extern _Float64 fmaximum_mag_numf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); extern _Float64 __fmaximum_mag_numf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: extern _Float64 fminimum_mag_numf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); extern _Float64 __fminimum_mag_numf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: 900171: 900171: extern int totalorderf64 (const _Float64 *__x, const _Float64 *__y) noexcept (true) 900171: 900171: __attribute__ ((__pure__)); 900171: 900171: 900171: extern int totalordermagf64 (const _Float64 *__x, const _Float64 *__y) noexcept (true) 900171: 900171: __attribute__ ((__pure__)); 900171: 900171: 900171: extern _Float64 getpayloadf64 (const _Float64 *__x) noexcept (true); extern _Float64 __getpayloadf64 (const _Float64 *__x) noexcept (true); 900171: 900171: 900171: extern int setpayloadf64 (_Float64 *__x, _Float64 __payload) noexcept (true); 900171: 900171: 900171: extern int setpayloadsigf64 (_Float64 *__x, _Float64 __payload) noexcept (true); 900171: # 468 "/usr/aarch64-linux-gnu/include/math.h" 2 3 900171: # 484 "/usr/aarch64-linux-gnu/include/math.h" 3 900171: # 1 "/usr/aarch64-linux-gnu/include/bits/mathcalls.h" 1 3 900171: # 53 "/usr/aarch64-linux-gnu/include/bits/mathcalls.h" 3 900171: extern _Float128 acosf128 (_Float128 __x) noexcept (true); extern _Float128 __acosf128 (_Float128 __x) noexcept (true); 900171: 900171: extern _Float128 asinf128 (_Float128 __x) noexcept (true); extern _Float128 __asinf128 (_Float128 __x) noexcept (true); 900171: 900171: extern _Float128 atanf128 (_Float128 __x) noexcept (true); extern _Float128 __atanf128 (_Float128 __x) noexcept (true); 900171: 900171: extern _Float128 atan2f128 (_Float128 __y, _Float128 __x) noexcept (true); extern _Float128 __atan2f128 (_Float128 __y, _Float128 __x) noexcept (true); 900171: 900171: 900171: extern _Float128 cosf128 (_Float128 __x) noexcept (true); extern _Float128 __cosf128 (_Float128 __x) noexcept (true); 900171: 900171: extern _Float128 sinf128 (_Float128 __x) noexcept (true); extern _Float128 __sinf128 (_Float128 __x) noexcept (true); 900171: 900171: extern _Float128 tanf128 (_Float128 __x) noexcept (true); extern _Float128 __tanf128 (_Float128 __x) noexcept (true); 900171: 900171: 900171: 900171: 900171: extern _Float128 coshf128 (_Float128 __x) noexcept (true); extern _Float128 __coshf128 (_Float128 __x) noexcept (true); 900171: 900171: extern _Float128 sinhf128 (_Float128 __x) noexcept (true); extern _Float128 __sinhf128 (_Float128 __x) noexcept (true); 900171: 900171: extern _Float128 tanhf128 (_Float128 __x) noexcept (true); extern _Float128 __tanhf128 (_Float128 __x) noexcept (true); 900171: 900171: 900171: 900171: extern void sincosf128 (_Float128 __x, _Float128 *__sinx, _Float128 *__cosx) noexcept (true); extern void __sincosf128 (_Float128 __x, _Float128 *__sinx, _Float128 *__cosx) noexcept (true) 900171: ; 900171: 900171: 900171: 900171: 900171: extern _Float128 acoshf128 (_Float128 __x) noexcept (true); extern _Float128 __acoshf128 (_Float128 __x) noexcept (true); 900171: 900171: extern _Float128 asinhf128 (_Float128 __x) noexcept (true); extern _Float128 __asinhf128 (_Float128 __x) noexcept (true); 900171: 900171: extern _Float128 atanhf128 (_Float128 __x) noexcept (true); extern _Float128 __atanhf128 (_Float128 __x) noexcept (true); 900171: 900171: 900171: 900171: 900171: 900171: extern _Float128 expf128 (_Float128 __x) noexcept (true); extern _Float128 __expf128 (_Float128 __x) noexcept (true); 900171: 900171: 900171: extern _Float128 frexpf128 (_Float128 __x, int *__exponent) noexcept (true); extern _Float128 __frexpf128 (_Float128 __x, int *__exponent) noexcept (true); 900171: 900171: 900171: extern _Float128 ldexpf128 (_Float128 __x, int __exponent) noexcept (true); extern _Float128 __ldexpf128 (_Float128 __x, int __exponent) noexcept (true); 900171: 900171: 900171: extern _Float128 logf128 (_Float128 __x) noexcept (true); extern _Float128 __logf128 (_Float128 __x) noexcept (true); 900171: 900171: 900171: extern _Float128 log10f128 (_Float128 __x) noexcept (true); extern _Float128 __log10f128 (_Float128 __x) noexcept (true); 900171: 900171: 900171: extern _Float128 modff128 (_Float128 __x, _Float128 *__iptr) noexcept (true); extern _Float128 __modff128 (_Float128 __x, _Float128 *__iptr) noexcept (true) __attribute__ ((__nonnull__ (2))); 900171: 900171: 900171: 900171: extern _Float128 exp10f128 (_Float128 __x) noexcept (true); extern _Float128 __exp10f128 (_Float128 __x) noexcept (true); 900171: 900171: 900171: 900171: 900171: extern _Float128 expm1f128 (_Float128 __x) noexcept (true); extern _Float128 __expm1f128 (_Float128 __x) noexcept (true); 900171: 900171: 900171: extern _Float128 log1pf128 (_Float128 __x) noexcept (true); extern _Float128 __log1pf128 (_Float128 __x) noexcept (true); 900171: 900171: 900171: extern _Float128 logbf128 (_Float128 __x) noexcept (true); extern _Float128 __logbf128 (_Float128 __x) noexcept (true); 900171: 900171: 900171: 900171: 900171: extern _Float128 exp2f128 (_Float128 __x) noexcept (true); extern _Float128 __exp2f128 (_Float128 __x) noexcept (true); 900171: 900171: 900171: extern _Float128 log2f128 (_Float128 __x) noexcept (true); extern _Float128 __log2f128 (_Float128 __x) noexcept (true); 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern _Float128 powf128 (_Float128 __x, _Float128 __y) noexcept (true); extern _Float128 __powf128 (_Float128 __x, _Float128 __y) noexcept (true); 900171: 900171: 900171: extern _Float128 sqrtf128 (_Float128 __x) noexcept (true); extern _Float128 __sqrtf128 (_Float128 __x) noexcept (true); 900171: 900171: 900171: 900171: extern _Float128 hypotf128 (_Float128 __x, _Float128 __y) noexcept (true); extern _Float128 __hypotf128 (_Float128 __x, _Float128 __y) noexcept (true); 900171: 900171: 900171: 900171: 900171: extern _Float128 cbrtf128 (_Float128 __x) noexcept (true); extern _Float128 __cbrtf128 (_Float128 __x) noexcept (true); 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern _Float128 ceilf128 (_Float128 __x) noexcept (true) __attribute__ ((__const__)); extern _Float128 __ceilf128 (_Float128 __x) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: extern _Float128 fabsf128 (_Float128 __x) noexcept (true) __attribute__ ((__const__)); extern _Float128 __fabsf128 (_Float128 __x) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: extern _Float128 floorf128 (_Float128 __x) noexcept (true) __attribute__ ((__const__)); extern _Float128 __floorf128 (_Float128 __x) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: extern _Float128 fmodf128 (_Float128 __x, _Float128 __y) noexcept (true); extern _Float128 __fmodf128 (_Float128 __x, _Float128 __y) noexcept (true); 900171: # 198 "/usr/aarch64-linux-gnu/include/bits/mathcalls.h" 3 900171: extern _Float128 copysignf128 (_Float128 __x, _Float128 __y) noexcept (true) __attribute__ ((__const__)); extern _Float128 __copysignf128 (_Float128 __x, _Float128 __y) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: 900171: 900171: extern _Float128 nanf128 (const char *__tagb) noexcept (true); extern _Float128 __nanf128 (const char *__tagb) noexcept (true); 900171: # 220 "/usr/aarch64-linux-gnu/include/bits/mathcalls.h" 3 900171: extern _Float128 j0f128 (_Float128) noexcept (true); extern _Float128 __j0f128 (_Float128) noexcept (true); 900171: extern _Float128 j1f128 (_Float128) noexcept (true); extern _Float128 __j1f128 (_Float128) noexcept (true); 900171: extern _Float128 jnf128 (int, _Float128) noexcept (true); extern _Float128 __jnf128 (int, _Float128) noexcept (true); 900171: extern _Float128 y0f128 (_Float128) noexcept (true); extern _Float128 __y0f128 (_Float128) noexcept (true); 900171: extern _Float128 y1f128 (_Float128) noexcept (true); extern _Float128 __y1f128 (_Float128) noexcept (true); 900171: extern _Float128 ynf128 (int, _Float128) noexcept (true); extern _Float128 __ynf128 (int, _Float128) noexcept (true); 900171: 900171: 900171: 900171: 900171: 900171: extern _Float128 erff128 (_Float128) noexcept (true); extern _Float128 __erff128 (_Float128) noexcept (true); 900171: extern _Float128 erfcf128 (_Float128) noexcept (true); extern _Float128 __erfcf128 (_Float128) noexcept (true); 900171: extern _Float128 lgammaf128 (_Float128) noexcept (true); extern _Float128 __lgammaf128 (_Float128) noexcept (true); 900171: 900171: 900171: 900171: 900171: extern _Float128 tgammaf128 (_Float128) noexcept (true); extern _Float128 __tgammaf128 (_Float128) noexcept (true); 900171: # 252 "/usr/aarch64-linux-gnu/include/bits/mathcalls.h" 3 900171: extern _Float128 lgammaf128_r (_Float128, int *__signgamp) noexcept (true); extern _Float128 __lgammaf128_r (_Float128, int *__signgamp) noexcept (true); 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern _Float128 rintf128 (_Float128 __x) noexcept (true); extern _Float128 __rintf128 (_Float128 __x) noexcept (true); 900171: 900171: 900171: extern _Float128 nextafterf128 (_Float128 __x, _Float128 __y) noexcept (true); extern _Float128 __nextafterf128 (_Float128 __x, _Float128 __y) noexcept (true); 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern _Float128 nextdownf128 (_Float128 __x) noexcept (true); extern _Float128 __nextdownf128 (_Float128 __x) noexcept (true); 900171: 900171: extern _Float128 nextupf128 (_Float128 __x) noexcept (true); extern _Float128 __nextupf128 (_Float128 __x) noexcept (true); 900171: 900171: 900171: 900171: extern _Float128 remainderf128 (_Float128 __x, _Float128 __y) noexcept (true); extern _Float128 __remainderf128 (_Float128 __x, _Float128 __y) noexcept (true); 900171: 900171: 900171: 900171: extern _Float128 scalbnf128 (_Float128 __x, int __n) noexcept (true); extern _Float128 __scalbnf128 (_Float128 __x, int __n) noexcept (true); 900171: 900171: 900171: 900171: extern int ilogbf128 (_Float128 __x) noexcept (true); extern int __ilogbf128 (_Float128 __x) noexcept (true); 900171: 900171: 900171: 900171: 900171: extern long int llogbf128 (_Float128 __x) noexcept (true); extern long int __llogbf128 (_Float128 __x) noexcept (true); 900171: 900171: 900171: 900171: 900171: extern _Float128 scalblnf128 (_Float128 __x, long int __n) noexcept (true); extern _Float128 __scalblnf128 (_Float128 __x, long int __n) noexcept (true); 900171: 900171: 900171: 900171: extern _Float128 nearbyintf128 (_Float128 __x) noexcept (true); extern _Float128 __nearbyintf128 (_Float128 __x) noexcept (true); 900171: 900171: 900171: 900171: extern _Float128 roundf128 (_Float128 __x) noexcept (true) __attribute__ ((__const__)); extern _Float128 __roundf128 (_Float128 __x) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: 900171: extern _Float128 truncf128 (_Float128 __x) noexcept (true) __attribute__ ((__const__)); extern _Float128 __truncf128 (_Float128 __x) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: 900171: 900171: extern _Float128 remquof128 (_Float128 __x, _Float128 __y, int *__quo) noexcept (true); extern _Float128 __remquof128 (_Float128 __x, _Float128 __y, int *__quo) noexcept (true); 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern long int lrintf128 (_Float128 __x) noexcept (true); extern long int __lrintf128 (_Float128 __x) noexcept (true); 900171: __extension__ 900171: extern long long int llrintf128 (_Float128 __x) noexcept (true); extern long long int __llrintf128 (_Float128 __x) noexcept (true); 900171: 900171: 900171: 900171: extern long int lroundf128 (_Float128 __x) noexcept (true); extern long int __lroundf128 (_Float128 __x) noexcept (true); 900171: __extension__ 900171: extern long long int llroundf128 (_Float128 __x) noexcept (true); extern long long int __llroundf128 (_Float128 __x) noexcept (true); 900171: 900171: 900171: 900171: extern _Float128 fdimf128 (_Float128 __x, _Float128 __y) noexcept (true); extern _Float128 __fdimf128 (_Float128 __x, _Float128 __y) noexcept (true); 900171: 900171: 900171: 900171: extern _Float128 fmaxf128 (_Float128 __x, _Float128 __y) noexcept (true) __attribute__ ((__const__)); extern _Float128 __fmaxf128 (_Float128 __x, _Float128 __y) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: extern _Float128 fminf128 (_Float128 __x, _Float128 __y) noexcept (true) __attribute__ ((__const__)); extern _Float128 __fminf128 (_Float128 __x, _Float128 __y) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: 900171: extern _Float128 fmaf128 (_Float128 __x, _Float128 __y, _Float128 __z) noexcept (true); extern _Float128 __fmaf128 (_Float128 __x, _Float128 __y, _Float128 __z) noexcept (true); 900171: 900171: 900171: 900171: 900171: extern _Float128 roundevenf128 (_Float128 __x) noexcept (true) __attribute__ ((__const__)); extern _Float128 __roundevenf128 (_Float128 __x) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: 900171: extern __intmax_t fromfpf128 (_Float128 __x, int __round, unsigned int __width) noexcept (true); extern __intmax_t __fromfpf128 (_Float128 __x, int __round, unsigned int __width) noexcept (true) 900171: ; 900171: 900171: 900171: 900171: extern __uintmax_t ufromfpf128 (_Float128 __x, int __round, unsigned int __width) noexcept (true); extern __uintmax_t __ufromfpf128 (_Float128 __x, int __round, unsigned int __width) noexcept (true) 900171: ; 900171: 900171: 900171: 900171: 900171: extern __intmax_t fromfpxf128 (_Float128 __x, int __round, unsigned int __width) noexcept (true); extern __intmax_t __fromfpxf128 (_Float128 __x, int __round, unsigned int __width) noexcept (true) 900171: ; 900171: 900171: 900171: 900171: 900171: extern __uintmax_t ufromfpxf128 (_Float128 __x, int __round, unsigned int __width) noexcept (true); extern __uintmax_t __ufromfpxf128 (_Float128 __x, int __round, unsigned int __width) noexcept (true) 900171: ; 900171: 900171: 900171: extern int canonicalizef128 (_Float128 *__cx, const _Float128 *__x) noexcept (true); 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern _Float128 fmaxmagf128 (_Float128 __x, _Float128 __y) noexcept (true) __attribute__ ((__const__)); extern _Float128 __fmaxmagf128 (_Float128 __x, _Float128 __y) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: extern _Float128 fminmagf128 (_Float128 __x, _Float128 __y) noexcept (true) __attribute__ ((__const__)); extern _Float128 __fminmagf128 (_Float128 __x, _Float128 __y) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: 900171: 900171: extern _Float128 fmaximumf128 (_Float128 __x, _Float128 __y) noexcept (true) __attribute__ ((__const__)); extern _Float128 __fmaximumf128 (_Float128 __x, _Float128 __y) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: extern _Float128 fminimumf128 (_Float128 __x, _Float128 __y) noexcept (true) __attribute__ ((__const__)); extern _Float128 __fminimumf128 (_Float128 __x, _Float128 __y) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: extern _Float128 fmaximum_numf128 (_Float128 __x, _Float128 __y) noexcept (true) __attribute__ ((__const__)); extern _Float128 __fmaximum_numf128 (_Float128 __x, _Float128 __y) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: extern _Float128 fminimum_numf128 (_Float128 __x, _Float128 __y) noexcept (true) __attribute__ ((__const__)); extern _Float128 __fminimum_numf128 (_Float128 __x, _Float128 __y) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: extern _Float128 fmaximum_magf128 (_Float128 __x, _Float128 __y) noexcept (true) __attribute__ ((__const__)); extern _Float128 __fmaximum_magf128 (_Float128 __x, _Float128 __y) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: extern _Float128 fminimum_magf128 (_Float128 __x, _Float128 __y) noexcept (true) __attribute__ ((__const__)); extern _Float128 __fminimum_magf128 (_Float128 __x, _Float128 __y) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: extern _Float128 fmaximum_mag_numf128 (_Float128 __x, _Float128 __y) noexcept (true) __attribute__ ((__const__)); extern _Float128 __fmaximum_mag_numf128 (_Float128 __x, _Float128 __y) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: extern _Float128 fminimum_mag_numf128 (_Float128 __x, _Float128 __y) noexcept (true) __attribute__ ((__const__)); extern _Float128 __fminimum_mag_numf128 (_Float128 __x, _Float128 __y) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: 900171: 900171: extern int totalorderf128 (const _Float128 *__x, const _Float128 *__y) noexcept (true) 900171: 900171: __attribute__ ((__pure__)); 900171: 900171: 900171: extern int totalordermagf128 (const _Float128 *__x, const _Float128 *__y) noexcept (true) 900171: 900171: __attribute__ ((__pure__)); 900171: 900171: 900171: extern _Float128 getpayloadf128 (const _Float128 *__x) noexcept (true); extern _Float128 __getpayloadf128 (const _Float128 *__x) noexcept (true); 900171: 900171: 900171: extern int setpayloadf128 (_Float128 *__x, _Float128 __payload) noexcept (true); 900171: 900171: 900171: extern int setpayloadsigf128 (_Float128 *__x, _Float128 __payload) noexcept (true); 900171: # 485 "/usr/aarch64-linux-gnu/include/math.h" 2 3 900171: # 501 "/usr/aarch64-linux-gnu/include/math.h" 3 900171: # 1 "/usr/aarch64-linux-gnu/include/bits/mathcalls.h" 1 3 900171: # 53 "/usr/aarch64-linux-gnu/include/bits/mathcalls.h" 3 900171: extern _Float32x acosf32x (_Float32x __x) noexcept (true); extern _Float32x __acosf32x (_Float32x __x) noexcept (true); 900171: 900171: extern _Float32x asinf32x (_Float32x __x) noexcept (true); extern _Float32x __asinf32x (_Float32x __x) noexcept (true); 900171: 900171: extern _Float32x atanf32x (_Float32x __x) noexcept (true); extern _Float32x __atanf32x (_Float32x __x) noexcept (true); 900171: 900171: extern _Float32x atan2f32x (_Float32x __y, _Float32x __x) noexcept (true); extern _Float32x __atan2f32x (_Float32x __y, _Float32x __x) noexcept (true); 900171: 900171: 900171: extern _Float32x cosf32x (_Float32x __x) noexcept (true); extern _Float32x __cosf32x (_Float32x __x) noexcept (true); 900171: 900171: extern _Float32x sinf32x (_Float32x __x) noexcept (true); extern _Float32x __sinf32x (_Float32x __x) noexcept (true); 900171: 900171: extern _Float32x tanf32x (_Float32x __x) noexcept (true); extern _Float32x __tanf32x (_Float32x __x) noexcept (true); 900171: 900171: 900171: 900171: 900171: extern _Float32x coshf32x (_Float32x __x) noexcept (true); extern _Float32x __coshf32x (_Float32x __x) noexcept (true); 900171: 900171: extern _Float32x sinhf32x (_Float32x __x) noexcept (true); extern _Float32x __sinhf32x (_Float32x __x) noexcept (true); 900171: 900171: extern _Float32x tanhf32x (_Float32x __x) noexcept (true); extern _Float32x __tanhf32x (_Float32x __x) noexcept (true); 900171: 900171: 900171: 900171: extern void sincosf32x (_Float32x __x, _Float32x *__sinx, _Float32x *__cosx) noexcept (true); extern void __sincosf32x (_Float32x __x, _Float32x *__sinx, _Float32x *__cosx) noexcept (true) 900171: ; 900171: 900171: 900171: 900171: 900171: extern _Float32x acoshf32x (_Float32x __x) noexcept (true); extern _Float32x __acoshf32x (_Float32x __x) noexcept (true); 900171: 900171: extern _Float32x asinhf32x (_Float32x __x) noexcept (true); extern _Float32x __asinhf32x (_Float32x __x) noexcept (true); 900171: 900171: extern _Float32x atanhf32x (_Float32x __x) noexcept (true); extern _Float32x __atanhf32x (_Float32x __x) noexcept (true); 900171: 900171: 900171: 900171: 900171: 900171: extern _Float32x expf32x (_Float32x __x) noexcept (true); extern _Float32x __expf32x (_Float32x __x) noexcept (true); 900171: 900171: 900171: extern _Float32x frexpf32x (_Float32x __x, int *__exponent) noexcept (true); extern _Float32x __frexpf32x (_Float32x __x, int *__exponent) noexcept (true); 900171: 900171: 900171: extern _Float32x ldexpf32x (_Float32x __x, int __exponent) noexcept (true); extern _Float32x __ldexpf32x (_Float32x __x, int __exponent) noexcept (true); 900171: 900171: 900171: extern _Float32x logf32x (_Float32x __x) noexcept (true); extern _Float32x __logf32x (_Float32x __x) noexcept (true); 900171: 900171: 900171: extern _Float32x log10f32x (_Float32x __x) noexcept (true); extern _Float32x __log10f32x (_Float32x __x) noexcept (true); 900171: 900171: 900171: extern _Float32x modff32x (_Float32x __x, _Float32x *__iptr) noexcept (true); extern _Float32x __modff32x (_Float32x __x, _Float32x *__iptr) noexcept (true) __attribute__ ((__nonnull__ (2))); 900171: 900171: 900171: 900171: extern _Float32x exp10f32x (_Float32x __x) noexcept (true); extern _Float32x __exp10f32x (_Float32x __x) noexcept (true); 900171: 900171: 900171: 900171: 900171: extern _Float32x expm1f32x (_Float32x __x) noexcept (true); extern _Float32x __expm1f32x (_Float32x __x) noexcept (true); 900171: 900171: 900171: extern _Float32x log1pf32x (_Float32x __x) noexcept (true); extern _Float32x __log1pf32x (_Float32x __x) noexcept (true); 900171: 900171: 900171: extern _Float32x logbf32x (_Float32x __x) noexcept (true); extern _Float32x __logbf32x (_Float32x __x) noexcept (true); 900171: 900171: 900171: 900171: 900171: extern _Float32x exp2f32x (_Float32x __x) noexcept (true); extern _Float32x __exp2f32x (_Float32x __x) noexcept (true); 900171: 900171: 900171: extern _Float32x log2f32x (_Float32x __x) noexcept (true); extern _Float32x __log2f32x (_Float32x __x) noexcept (true); 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern _Float32x powf32x (_Float32x __x, _Float32x __y) noexcept (true); extern _Float32x __powf32x (_Float32x __x, _Float32x __y) noexcept (true); 900171: 900171: 900171: extern _Float32x sqrtf32x (_Float32x __x) noexcept (true); extern _Float32x __sqrtf32x (_Float32x __x) noexcept (true); 900171: 900171: 900171: 900171: extern _Float32x hypotf32x (_Float32x __x, _Float32x __y) noexcept (true); extern _Float32x __hypotf32x (_Float32x __x, _Float32x __y) noexcept (true); 900171: 900171: 900171: 900171: 900171: extern _Float32x cbrtf32x (_Float32x __x) noexcept (true); extern _Float32x __cbrtf32x (_Float32x __x) noexcept (true); 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern _Float32x ceilf32x (_Float32x __x) noexcept (true) __attribute__ ((__const__)); extern _Float32x __ceilf32x (_Float32x __x) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: extern _Float32x fabsf32x (_Float32x __x) noexcept (true) __attribute__ ((__const__)); extern _Float32x __fabsf32x (_Float32x __x) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: extern _Float32x floorf32x (_Float32x __x) noexcept (true) __attribute__ ((__const__)); extern _Float32x __floorf32x (_Float32x __x) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: extern _Float32x fmodf32x (_Float32x __x, _Float32x __y) noexcept (true); extern _Float32x __fmodf32x (_Float32x __x, _Float32x __y) noexcept (true); 900171: # 198 "/usr/aarch64-linux-gnu/include/bits/mathcalls.h" 3 900171: extern _Float32x copysignf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); extern _Float32x __copysignf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: 900171: 900171: extern _Float32x nanf32x (const char *__tagb) noexcept (true); extern _Float32x __nanf32x (const char *__tagb) noexcept (true); 900171: # 220 "/usr/aarch64-linux-gnu/include/bits/mathcalls.h" 3 900171: extern _Float32x j0f32x (_Float32x) noexcept (true); extern _Float32x __j0f32x (_Float32x) noexcept (true); 900171: extern _Float32x j1f32x (_Float32x) noexcept (true); extern _Float32x __j1f32x (_Float32x) noexcept (true); 900171: extern _Float32x jnf32x (int, _Float32x) noexcept (true); extern _Float32x __jnf32x (int, _Float32x) noexcept (true); 900171: extern _Float32x y0f32x (_Float32x) noexcept (true); extern _Float32x __y0f32x (_Float32x) noexcept (true); 900171: extern _Float32x y1f32x (_Float32x) noexcept (true); extern _Float32x __y1f32x (_Float32x) noexcept (true); 900171: extern _Float32x ynf32x (int, _Float32x) noexcept (true); extern _Float32x __ynf32x (int, _Float32x) noexcept (true); 900171: 900171: 900171: 900171: 900171: 900171: extern _Float32x erff32x (_Float32x) noexcept (true); extern _Float32x __erff32x (_Float32x) noexcept (true); 900171: extern _Float32x erfcf32x (_Float32x) noexcept (true); extern _Float32x __erfcf32x (_Float32x) noexcept (true); 900171: extern _Float32x lgammaf32x (_Float32x) noexcept (true); extern _Float32x __lgammaf32x (_Float32x) noexcept (true); 900171: 900171: 900171: 900171: 900171: extern _Float32x tgammaf32x (_Float32x) noexcept (true); extern _Float32x __tgammaf32x (_Float32x) noexcept (true); 900171: # 252 "/usr/aarch64-linux-gnu/include/bits/mathcalls.h" 3 900171: extern _Float32x lgammaf32x_r (_Float32x, int *__signgamp) noexcept (true); extern _Float32x __lgammaf32x_r (_Float32x, int *__signgamp) noexcept (true); 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern _Float32x rintf32x (_Float32x __x) noexcept (true); extern _Float32x __rintf32x (_Float32x __x) noexcept (true); 900171: 900171: 900171: extern _Float32x nextafterf32x (_Float32x __x, _Float32x __y) noexcept (true); extern _Float32x __nextafterf32x (_Float32x __x, _Float32x __y) noexcept (true); 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern _Float32x nextdownf32x (_Float32x __x) noexcept (true); extern _Float32x __nextdownf32x (_Float32x __x) noexcept (true); 900171: 900171: extern _Float32x nextupf32x (_Float32x __x) noexcept (true); extern _Float32x __nextupf32x (_Float32x __x) noexcept (true); 900171: 900171: 900171: 900171: extern _Float32x remainderf32x (_Float32x __x, _Float32x __y) noexcept (true); extern _Float32x __remainderf32x (_Float32x __x, _Float32x __y) noexcept (true); 900171: 900171: 900171: 900171: extern _Float32x scalbnf32x (_Float32x __x, int __n) noexcept (true); extern _Float32x __scalbnf32x (_Float32x __x, int __n) noexcept (true); 900171: 900171: 900171: 900171: extern int ilogbf32x (_Float32x __x) noexcept (true); extern int __ilogbf32x (_Float32x __x) noexcept (true); 900171: 900171: 900171: 900171: 900171: extern long int llogbf32x (_Float32x __x) noexcept (true); extern long int __llogbf32x (_Float32x __x) noexcept (true); 900171: 900171: 900171: 900171: 900171: extern _Float32x scalblnf32x (_Float32x __x, long int __n) noexcept (true); extern _Float32x __scalblnf32x (_Float32x __x, long int __n) noexcept (true); 900171: 900171: 900171: 900171: extern _Float32x nearbyintf32x (_Float32x __x) noexcept (true); extern _Float32x __nearbyintf32x (_Float32x __x) noexcept (true); 900171: 900171: 900171: 900171: extern _Float32x roundf32x (_Float32x __x) noexcept (true) __attribute__ ((__const__)); extern _Float32x __roundf32x (_Float32x __x) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: 900171: extern _Float32x truncf32x (_Float32x __x) noexcept (true) __attribute__ ((__const__)); extern _Float32x __truncf32x (_Float32x __x) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: 900171: 900171: extern _Float32x remquof32x (_Float32x __x, _Float32x __y, int *__quo) noexcept (true); extern _Float32x __remquof32x (_Float32x __x, _Float32x __y, int *__quo) noexcept (true); 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern long int lrintf32x (_Float32x __x) noexcept (true); extern long int __lrintf32x (_Float32x __x) noexcept (true); 900171: __extension__ 900171: extern long long int llrintf32x (_Float32x __x) noexcept (true); extern long long int __llrintf32x (_Float32x __x) noexcept (true); 900171: 900171: 900171: 900171: extern long int lroundf32x (_Float32x __x) noexcept (true); extern long int __lroundf32x (_Float32x __x) noexcept (true); 900171: __extension__ 900171: extern long long int llroundf32x (_Float32x __x) noexcept (true); extern long long int __llroundf32x (_Float32x __x) noexcept (true); 900171: 900171: 900171: 900171: extern _Float32x fdimf32x (_Float32x __x, _Float32x __y) noexcept (true); extern _Float32x __fdimf32x (_Float32x __x, _Float32x __y) noexcept (true); 900171: 900171: 900171: 900171: extern _Float32x fmaxf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); extern _Float32x __fmaxf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: extern _Float32x fminf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); extern _Float32x __fminf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: 900171: extern _Float32x fmaf32x (_Float32x __x, _Float32x __y, _Float32x __z) noexcept (true); extern _Float32x __fmaf32x (_Float32x __x, _Float32x __y, _Float32x __z) noexcept (true); 900171: 900171: 900171: 900171: 900171: extern _Float32x roundevenf32x (_Float32x __x) noexcept (true) __attribute__ ((__const__)); extern _Float32x __roundevenf32x (_Float32x __x) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: 900171: extern __intmax_t fromfpf32x (_Float32x __x, int __round, unsigned int __width) noexcept (true); extern __intmax_t __fromfpf32x (_Float32x __x, int __round, unsigned int __width) noexcept (true) 900171: ; 900171: 900171: 900171: 900171: extern __uintmax_t ufromfpf32x (_Float32x __x, int __round, unsigned int __width) noexcept (true); extern __uintmax_t __ufromfpf32x (_Float32x __x, int __round, unsigned int __width) noexcept (true) 900171: ; 900171: 900171: 900171: 900171: 900171: extern __intmax_t fromfpxf32x (_Float32x __x, int __round, unsigned int __width) noexcept (true); extern __intmax_t __fromfpxf32x (_Float32x __x, int __round, unsigned int __width) noexcept (true) 900171: ; 900171: 900171: 900171: 900171: 900171: extern __uintmax_t ufromfpxf32x (_Float32x __x, int __round, unsigned int __width) noexcept (true); extern __uintmax_t __ufromfpxf32x (_Float32x __x, int __round, unsigned int __width) noexcept (true) 900171: ; 900171: 900171: 900171: extern int canonicalizef32x (_Float32x *__cx, const _Float32x *__x) noexcept (true); 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern _Float32x fmaxmagf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); extern _Float32x __fmaxmagf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: extern _Float32x fminmagf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); extern _Float32x __fminmagf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: 900171: 900171: extern _Float32x fmaximumf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); extern _Float32x __fmaximumf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: extern _Float32x fminimumf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); extern _Float32x __fminimumf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: extern _Float32x fmaximum_numf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); extern _Float32x __fmaximum_numf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: extern _Float32x fminimum_numf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); extern _Float32x __fminimum_numf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: extern _Float32x fmaximum_magf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); extern _Float32x __fmaximum_magf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: extern _Float32x fminimum_magf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); extern _Float32x __fminimum_magf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: extern _Float32x fmaximum_mag_numf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); extern _Float32x __fmaximum_mag_numf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: extern _Float32x fminimum_mag_numf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); extern _Float32x __fminimum_mag_numf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: 900171: 900171: extern int totalorderf32x (const _Float32x *__x, const _Float32x *__y) noexcept (true) 900171: 900171: __attribute__ ((__pure__)); 900171: 900171: 900171: extern int totalordermagf32x (const _Float32x *__x, const _Float32x *__y) noexcept (true) 900171: 900171: __attribute__ ((__pure__)); 900171: 900171: 900171: extern _Float32x getpayloadf32x (const _Float32x *__x) noexcept (true); extern _Float32x __getpayloadf32x (const _Float32x *__x) noexcept (true); 900171: 900171: 900171: extern int setpayloadf32x (_Float32x *__x, _Float32x __payload) noexcept (true); 900171: 900171: 900171: extern int setpayloadsigf32x (_Float32x *__x, _Float32x __payload) noexcept (true); 900171: # 502 "/usr/aarch64-linux-gnu/include/math.h" 2 3 900171: # 518 "/usr/aarch64-linux-gnu/include/math.h" 3 900171: # 1 "/usr/aarch64-linux-gnu/include/bits/mathcalls.h" 1 3 900171: # 53 "/usr/aarch64-linux-gnu/include/bits/mathcalls.h" 3 900171: extern _Float64x acosf64x (_Float64x __x) noexcept (true); extern _Float64x __acosf64x (_Float64x __x) noexcept (true); 900171: 900171: extern _Float64x asinf64x (_Float64x __x) noexcept (true); extern _Float64x __asinf64x (_Float64x __x) noexcept (true); 900171: 900171: extern _Float64x atanf64x (_Float64x __x) noexcept (true); extern _Float64x __atanf64x (_Float64x __x) noexcept (true); 900171: 900171: extern _Float64x atan2f64x (_Float64x __y, _Float64x __x) noexcept (true); extern _Float64x __atan2f64x (_Float64x __y, _Float64x __x) noexcept (true); 900171: 900171: 900171: extern _Float64x cosf64x (_Float64x __x) noexcept (true); extern _Float64x __cosf64x (_Float64x __x) noexcept (true); 900171: 900171: extern _Float64x sinf64x (_Float64x __x) noexcept (true); extern _Float64x __sinf64x (_Float64x __x) noexcept (true); 900171: 900171: extern _Float64x tanf64x (_Float64x __x) noexcept (true); extern _Float64x __tanf64x (_Float64x __x) noexcept (true); 900171: 900171: 900171: 900171: 900171: extern _Float64x coshf64x (_Float64x __x) noexcept (true); extern _Float64x __coshf64x (_Float64x __x) noexcept (true); 900171: 900171: extern _Float64x sinhf64x (_Float64x __x) noexcept (true); extern _Float64x __sinhf64x (_Float64x __x) noexcept (true); 900171: 900171: extern _Float64x tanhf64x (_Float64x __x) noexcept (true); extern _Float64x __tanhf64x (_Float64x __x) noexcept (true); 900171: 900171: 900171: 900171: extern void sincosf64x (_Float64x __x, _Float64x *__sinx, _Float64x *__cosx) noexcept (true); extern void __sincosf64x (_Float64x __x, _Float64x *__sinx, _Float64x *__cosx) noexcept (true) 900171: ; 900171: 900171: 900171: 900171: 900171: extern _Float64x acoshf64x (_Float64x __x) noexcept (true); extern _Float64x __acoshf64x (_Float64x __x) noexcept (true); 900171: 900171: extern _Float64x asinhf64x (_Float64x __x) noexcept (true); extern _Float64x __asinhf64x (_Float64x __x) noexcept (true); 900171: 900171: extern _Float64x atanhf64x (_Float64x __x) noexcept (true); extern _Float64x __atanhf64x (_Float64x __x) noexcept (true); 900171: 900171: 900171: 900171: 900171: 900171: extern _Float64x expf64x (_Float64x __x) noexcept (true); extern _Float64x __expf64x (_Float64x __x) noexcept (true); 900171: 900171: 900171: extern _Float64x frexpf64x (_Float64x __x, int *__exponent) noexcept (true); extern _Float64x __frexpf64x (_Float64x __x, int *__exponent) noexcept (true); 900171: 900171: 900171: extern _Float64x ldexpf64x (_Float64x __x, int __exponent) noexcept (true); extern _Float64x __ldexpf64x (_Float64x __x, int __exponent) noexcept (true); 900171: 900171: 900171: extern _Float64x logf64x (_Float64x __x) noexcept (true); extern _Float64x __logf64x (_Float64x __x) noexcept (true); 900171: 900171: 900171: extern _Float64x log10f64x (_Float64x __x) noexcept (true); extern _Float64x __log10f64x (_Float64x __x) noexcept (true); 900171: 900171: 900171: extern _Float64x modff64x (_Float64x __x, _Float64x *__iptr) noexcept (true); extern _Float64x __modff64x (_Float64x __x, _Float64x *__iptr) noexcept (true) __attribute__ ((__nonnull__ (2))); 900171: 900171: 900171: 900171: extern _Float64x exp10f64x (_Float64x __x) noexcept (true); extern _Float64x __exp10f64x (_Float64x __x) noexcept (true); 900171: 900171: 900171: 900171: 900171: extern _Float64x expm1f64x (_Float64x __x) noexcept (true); extern _Float64x __expm1f64x (_Float64x __x) noexcept (true); 900171: 900171: 900171: extern _Float64x log1pf64x (_Float64x __x) noexcept (true); extern _Float64x __log1pf64x (_Float64x __x) noexcept (true); 900171: 900171: 900171: extern _Float64x logbf64x (_Float64x __x) noexcept (true); extern _Float64x __logbf64x (_Float64x __x) noexcept (true); 900171: 900171: 900171: 900171: 900171: extern _Float64x exp2f64x (_Float64x __x) noexcept (true); extern _Float64x __exp2f64x (_Float64x __x) noexcept (true); 900171: 900171: 900171: extern _Float64x log2f64x (_Float64x __x) noexcept (true); extern _Float64x __log2f64x (_Float64x __x) noexcept (true); 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern _Float64x powf64x (_Float64x __x, _Float64x __y) noexcept (true); extern _Float64x __powf64x (_Float64x __x, _Float64x __y) noexcept (true); 900171: 900171: 900171: extern _Float64x sqrtf64x (_Float64x __x) noexcept (true); extern _Float64x __sqrtf64x (_Float64x __x) noexcept (true); 900171: 900171: 900171: 900171: extern _Float64x hypotf64x (_Float64x __x, _Float64x __y) noexcept (true); extern _Float64x __hypotf64x (_Float64x __x, _Float64x __y) noexcept (true); 900171: 900171: 900171: 900171: 900171: extern _Float64x cbrtf64x (_Float64x __x) noexcept (true); extern _Float64x __cbrtf64x (_Float64x __x) noexcept (true); 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern _Float64x ceilf64x (_Float64x __x) noexcept (true) __attribute__ ((__const__)); extern _Float64x __ceilf64x (_Float64x __x) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: extern _Float64x fabsf64x (_Float64x __x) noexcept (true) __attribute__ ((__const__)); extern _Float64x __fabsf64x (_Float64x __x) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: extern _Float64x floorf64x (_Float64x __x) noexcept (true) __attribute__ ((__const__)); extern _Float64x __floorf64x (_Float64x __x) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: extern _Float64x fmodf64x (_Float64x __x, _Float64x __y) noexcept (true); extern _Float64x __fmodf64x (_Float64x __x, _Float64x __y) noexcept (true); 900171: # 198 "/usr/aarch64-linux-gnu/include/bits/mathcalls.h" 3 900171: extern _Float64x copysignf64x (_Float64x __x, _Float64x __y) noexcept (true) __attribute__ ((__const__)); extern _Float64x __copysignf64x (_Float64x __x, _Float64x __y) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: 900171: 900171: extern _Float64x nanf64x (const char *__tagb) noexcept (true); extern _Float64x __nanf64x (const char *__tagb) noexcept (true); 900171: # 220 "/usr/aarch64-linux-gnu/include/bits/mathcalls.h" 3 900171: extern _Float64x j0f64x (_Float64x) noexcept (true); extern _Float64x __j0f64x (_Float64x) noexcept (true); 900171: extern _Float64x j1f64x (_Float64x) noexcept (true); extern _Float64x __j1f64x (_Float64x) noexcept (true); 900171: extern _Float64x jnf64x (int, _Float64x) noexcept (true); extern _Float64x __jnf64x (int, _Float64x) noexcept (true); 900171: extern _Float64x y0f64x (_Float64x) noexcept (true); extern _Float64x __y0f64x (_Float64x) noexcept (true); 900171: extern _Float64x y1f64x (_Float64x) noexcept (true); extern _Float64x __y1f64x (_Float64x) noexcept (true); 900171: extern _Float64x ynf64x (int, _Float64x) noexcept (true); extern _Float64x __ynf64x (int, _Float64x) noexcept (true); 900171: 900171: 900171: 900171: 900171: 900171: extern _Float64x erff64x (_Float64x) noexcept (true); extern _Float64x __erff64x (_Float64x) noexcept (true); 900171: extern _Float64x erfcf64x (_Float64x) noexcept (true); extern _Float64x __erfcf64x (_Float64x) noexcept (true); 900171: extern _Float64x lgammaf64x (_Float64x) noexcept (true); extern _Float64x __lgammaf64x (_Float64x) noexcept (true); 900171: 900171: 900171: 900171: 900171: extern _Float64x tgammaf64x (_Float64x) noexcept (true); extern _Float64x __tgammaf64x (_Float64x) noexcept (true); 900171: # 252 "/usr/aarch64-linux-gnu/include/bits/mathcalls.h" 3 900171: extern _Float64x lgammaf64x_r (_Float64x, int *__signgamp) noexcept (true); extern _Float64x __lgammaf64x_r (_Float64x, int *__signgamp) noexcept (true); 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern _Float64x rintf64x (_Float64x __x) noexcept (true); extern _Float64x __rintf64x (_Float64x __x) noexcept (true); 900171: 900171: 900171: extern _Float64x nextafterf64x (_Float64x __x, _Float64x __y) noexcept (true); extern _Float64x __nextafterf64x (_Float64x __x, _Float64x __y) noexcept (true); 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern _Float64x nextdownf64x (_Float64x __x) noexcept (true); extern _Float64x __nextdownf64x (_Float64x __x) noexcept (true); 900171: 900171: extern _Float64x nextupf64x (_Float64x __x) noexcept (true); extern _Float64x __nextupf64x (_Float64x __x) noexcept (true); 900171: 900171: 900171: 900171: extern _Float64x remainderf64x (_Float64x __x, _Float64x __y) noexcept (true); extern _Float64x __remainderf64x (_Float64x __x, _Float64x __y) noexcept (true); 900171: 900171: 900171: 900171: extern _Float64x scalbnf64x (_Float64x __x, int __n) noexcept (true); extern _Float64x __scalbnf64x (_Float64x __x, int __n) noexcept (true); 900171: 900171: 900171: 900171: extern int ilogbf64x (_Float64x __x) noexcept (true); extern int __ilogbf64x (_Float64x __x) noexcept (true); 900171: 900171: 900171: 900171: 900171: extern long int llogbf64x (_Float64x __x) noexcept (true); extern long int __llogbf64x (_Float64x __x) noexcept (true); 900171: 900171: 900171: 900171: 900171: extern _Float64x scalblnf64x (_Float64x __x, long int __n) noexcept (true); extern _Float64x __scalblnf64x (_Float64x __x, long int __n) noexcept (true); 900171: 900171: 900171: 900171: extern _Float64x nearbyintf64x (_Float64x __x) noexcept (true); extern _Float64x __nearbyintf64x (_Float64x __x) noexcept (true); 900171: 900171: 900171: 900171: extern _Float64x roundf64x (_Float64x __x) noexcept (true) __attribute__ ((__const__)); extern _Float64x __roundf64x (_Float64x __x) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: 900171: extern _Float64x truncf64x (_Float64x __x) noexcept (true) __attribute__ ((__const__)); extern _Float64x __truncf64x (_Float64x __x) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: 900171: 900171: extern _Float64x remquof64x (_Float64x __x, _Float64x __y, int *__quo) noexcept (true); extern _Float64x __remquof64x (_Float64x __x, _Float64x __y, int *__quo) noexcept (true); 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern long int lrintf64x (_Float64x __x) noexcept (true); extern long int __lrintf64x (_Float64x __x) noexcept (true); 900171: __extension__ 900171: extern long long int llrintf64x (_Float64x __x) noexcept (true); extern long long int __llrintf64x (_Float64x __x) noexcept (true); 900171: 900171: 900171: 900171: extern long int lroundf64x (_Float64x __x) noexcept (true); extern long int __lroundf64x (_Float64x __x) noexcept (true); 900171: __extension__ 900171: extern long long int llroundf64x (_Float64x __x) noexcept (true); extern long long int __llroundf64x (_Float64x __x) noexcept (true); 900171: 900171: 900171: 900171: extern _Float64x fdimf64x (_Float64x __x, _Float64x __y) noexcept (true); extern _Float64x __fdimf64x (_Float64x __x, _Float64x __y) noexcept (true); 900171: 900171: 900171: 900171: extern _Float64x fmaxf64x (_Float64x __x, _Float64x __y) noexcept (true) __attribute__ ((__const__)); extern _Float64x __fmaxf64x (_Float64x __x, _Float64x __y) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: extern _Float64x fminf64x (_Float64x __x, _Float64x __y) noexcept (true) __attribute__ ((__const__)); extern _Float64x __fminf64x (_Float64x __x, _Float64x __y) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: 900171: extern _Float64x fmaf64x (_Float64x __x, _Float64x __y, _Float64x __z) noexcept (true); extern _Float64x __fmaf64x (_Float64x __x, _Float64x __y, _Float64x __z) noexcept (true); 900171: 900171: 900171: 900171: 900171: extern _Float64x roundevenf64x (_Float64x __x) noexcept (true) __attribute__ ((__const__)); extern _Float64x __roundevenf64x (_Float64x __x) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: 900171: extern __intmax_t fromfpf64x (_Float64x __x, int __round, unsigned int __width) noexcept (true); extern __intmax_t __fromfpf64x (_Float64x __x, int __round, unsigned int __width) noexcept (true) 900171: ; 900171: 900171: 900171: 900171: extern __uintmax_t ufromfpf64x (_Float64x __x, int __round, unsigned int __width) noexcept (true); extern __uintmax_t __ufromfpf64x (_Float64x __x, int __round, unsigned int __width) noexcept (true) 900171: ; 900171: 900171: 900171: 900171: 900171: extern __intmax_t fromfpxf64x (_Float64x __x, int __round, unsigned int __width) noexcept (true); extern __intmax_t __fromfpxf64x (_Float64x __x, int __round, unsigned int __width) noexcept (true) 900171: ; 900171: 900171: 900171: 900171: 900171: extern __uintmax_t ufromfpxf64x (_Float64x __x, int __round, unsigned int __width) noexcept (true); extern __uintmax_t __ufromfpxf64x (_Float64x __x, int __round, unsigned int __width) noexcept (true) 900171: ; 900171: 900171: 900171: extern int canonicalizef64x (_Float64x *__cx, const _Float64x *__x) noexcept (true); 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern _Float64x fmaxmagf64x (_Float64x __x, _Float64x __y) noexcept (true) __attribute__ ((__const__)); extern _Float64x __fmaxmagf64x (_Float64x __x, _Float64x __y) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: extern _Float64x fminmagf64x (_Float64x __x, _Float64x __y) noexcept (true) __attribute__ ((__const__)); extern _Float64x __fminmagf64x (_Float64x __x, _Float64x __y) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: 900171: 900171: extern _Float64x fmaximumf64x (_Float64x __x, _Float64x __y) noexcept (true) __attribute__ ((__const__)); extern _Float64x __fmaximumf64x (_Float64x __x, _Float64x __y) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: extern _Float64x fminimumf64x (_Float64x __x, _Float64x __y) noexcept (true) __attribute__ ((__const__)); extern _Float64x __fminimumf64x (_Float64x __x, _Float64x __y) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: extern _Float64x fmaximum_numf64x (_Float64x __x, _Float64x __y) noexcept (true) __attribute__ ((__const__)); extern _Float64x __fmaximum_numf64x (_Float64x __x, _Float64x __y) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: extern _Float64x fminimum_numf64x (_Float64x __x, _Float64x __y) noexcept (true) __attribute__ ((__const__)); extern _Float64x __fminimum_numf64x (_Float64x __x, _Float64x __y) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: extern _Float64x fmaximum_magf64x (_Float64x __x, _Float64x __y) noexcept (true) __attribute__ ((__const__)); extern _Float64x __fmaximum_magf64x (_Float64x __x, _Float64x __y) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: extern _Float64x fminimum_magf64x (_Float64x __x, _Float64x __y) noexcept (true) __attribute__ ((__const__)); extern _Float64x __fminimum_magf64x (_Float64x __x, _Float64x __y) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: extern _Float64x fmaximum_mag_numf64x (_Float64x __x, _Float64x __y) noexcept (true) __attribute__ ((__const__)); extern _Float64x __fmaximum_mag_numf64x (_Float64x __x, _Float64x __y) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: extern _Float64x fminimum_mag_numf64x (_Float64x __x, _Float64x __y) noexcept (true) __attribute__ ((__const__)); extern _Float64x __fminimum_mag_numf64x (_Float64x __x, _Float64x __y) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: 900171: 900171: extern int totalorderf64x (const _Float64x *__x, const _Float64x *__y) noexcept (true) 900171: 900171: __attribute__ ((__pure__)); 900171: 900171: 900171: extern int totalordermagf64x (const _Float64x *__x, const _Float64x *__y) noexcept (true) 900171: 900171: __attribute__ ((__pure__)); 900171: 900171: 900171: extern _Float64x getpayloadf64x (const _Float64x *__x) noexcept (true); extern _Float64x __getpayloadf64x (const _Float64x *__x) noexcept (true); 900171: 900171: 900171: extern int setpayloadf64x (_Float64x *__x, _Float64x __payload) noexcept (true); 900171: 900171: 900171: extern int setpayloadsigf64x (_Float64x *__x, _Float64x __payload) noexcept (true); 900171: # 519 "/usr/aarch64-linux-gnu/include/math.h" 2 3 900171: # 566 "/usr/aarch64-linux-gnu/include/math.h" 3 900171: # 1 "/usr/aarch64-linux-gnu/include/bits/mathcalls-narrow.h" 1 3 900171: # 24 "/usr/aarch64-linux-gnu/include/bits/mathcalls-narrow.h" 3 900171: extern float fadd (double __x, double __y) noexcept (true); 900171: 900171: 900171: extern float fdiv (double __x, double __y) noexcept (true); 900171: 900171: 900171: extern float ffma (double __x, double __y, double __z) noexcept (true); 900171: 900171: 900171: extern float fmul (double __x, double __y) noexcept (true); 900171: 900171: 900171: extern float fsqrt (double __x) noexcept (true); 900171: 900171: 900171: extern float fsub (double __x, double __y) noexcept (true); 900171: # 567 "/usr/aarch64-linux-gnu/include/math.h" 2 3 900171: # 587 "/usr/aarch64-linux-gnu/include/math.h" 3 900171: # 1 "/usr/aarch64-linux-gnu/include/bits/mathcalls-narrow.h" 1 3 900171: # 24 "/usr/aarch64-linux-gnu/include/bits/mathcalls-narrow.h" 3 900171: extern float faddl (long double __x, long double __y) noexcept (true); 900171: 900171: 900171: extern float fdivl (long double __x, long double __y) noexcept (true); 900171: 900171: 900171: extern float ffmal (long double __x, long double __y, long double __z) noexcept (true); 900171: 900171: 900171: extern float fmull (long double __x, long double __y) noexcept (true); 900171: 900171: 900171: extern float fsqrtl (long double __x) noexcept (true); 900171: 900171: 900171: extern float fsubl (long double __x, long double __y) noexcept (true); 900171: # 588 "/usr/aarch64-linux-gnu/include/math.h" 2 3 900171: # 616 "/usr/aarch64-linux-gnu/include/math.h" 3 900171: # 1 "/usr/aarch64-linux-gnu/include/bits/mathcalls-narrow.h" 1 3 900171: # 24 "/usr/aarch64-linux-gnu/include/bits/mathcalls-narrow.h" 3 900171: extern double daddl (long double __x, long double __y) noexcept (true); 900171: 900171: 900171: extern double ddivl (long double __x, long double __y) noexcept (true); 900171: 900171: 900171: extern double dfmal (long double __x, long double __y, long double __z) noexcept (true); 900171: 900171: 900171: extern double dmull (long double __x, long double __y) noexcept (true); 900171: 900171: 900171: extern double dsqrtl (long double __x) noexcept (true); 900171: 900171: 900171: extern double dsubl (long double __x, long double __y) noexcept (true); 900171: # 617 "/usr/aarch64-linux-gnu/include/math.h" 2 3 900171: # 697 "/usr/aarch64-linux-gnu/include/math.h" 3 900171: # 1 "/usr/aarch64-linux-gnu/include/bits/mathcalls-narrow.h" 1 3 900171: # 24 "/usr/aarch64-linux-gnu/include/bits/mathcalls-narrow.h" 3 900171: extern _Float32 f32addf32x (_Float32x __x, _Float32x __y) noexcept (true); 900171: 900171: 900171: extern _Float32 f32divf32x (_Float32x __x, _Float32x __y) noexcept (true); 900171: 900171: 900171: extern _Float32 f32fmaf32x (_Float32x __x, _Float32x __y, _Float32x __z) noexcept (true); 900171: 900171: 900171: extern _Float32 f32mulf32x (_Float32x __x, _Float32x __y) noexcept (true); 900171: 900171: 900171: extern _Float32 f32sqrtf32x (_Float32x __x) noexcept (true); 900171: 900171: 900171: extern _Float32 f32subf32x (_Float32x __x, _Float32x __y) noexcept (true); 900171: # 698 "/usr/aarch64-linux-gnu/include/math.h" 2 3 900171: # 707 "/usr/aarch64-linux-gnu/include/math.h" 3 900171: # 1 "/usr/aarch64-linux-gnu/include/bits/mathcalls-narrow.h" 1 3 900171: # 24 "/usr/aarch64-linux-gnu/include/bits/mathcalls-narrow.h" 3 900171: extern _Float32 f32addf64 (_Float64 __x, _Float64 __y) noexcept (true); 900171: 900171: 900171: extern _Float32 f32divf64 (_Float64 __x, _Float64 __y) noexcept (true); 900171: 900171: 900171: extern _Float32 f32fmaf64 (_Float64 __x, _Float64 __y, _Float64 __z) noexcept (true); 900171: 900171: 900171: extern _Float32 f32mulf64 (_Float64 __x, _Float64 __y) noexcept (true); 900171: 900171: 900171: extern _Float32 f32sqrtf64 (_Float64 __x) noexcept (true); 900171: 900171: 900171: extern _Float32 f32subf64 (_Float64 __x, _Float64 __y) noexcept (true); 900171: # 708 "/usr/aarch64-linux-gnu/include/math.h" 2 3 900171: # 717 "/usr/aarch64-linux-gnu/include/math.h" 3 900171: # 1 "/usr/aarch64-linux-gnu/include/bits/mathcalls-narrow.h" 1 3 900171: # 24 "/usr/aarch64-linux-gnu/include/bits/mathcalls-narrow.h" 3 900171: extern _Float32 f32addf64x (_Float64x __x, _Float64x __y) noexcept (true); 900171: 900171: 900171: extern _Float32 f32divf64x (_Float64x __x, _Float64x __y) noexcept (true); 900171: 900171: 900171: extern _Float32 f32fmaf64x (_Float64x __x, _Float64x __y, _Float64x __z) noexcept (true); 900171: 900171: 900171: extern _Float32 f32mulf64x (_Float64x __x, _Float64x __y) noexcept (true); 900171: 900171: 900171: extern _Float32 f32sqrtf64x (_Float64x __x) noexcept (true); 900171: 900171: 900171: extern _Float32 f32subf64x (_Float64x __x, _Float64x __y) noexcept (true); 900171: # 718 "/usr/aarch64-linux-gnu/include/math.h" 2 3 900171: # 727 "/usr/aarch64-linux-gnu/include/math.h" 3 900171: # 1 "/usr/aarch64-linux-gnu/include/bits/mathcalls-narrow.h" 1 3 900171: # 24 "/usr/aarch64-linux-gnu/include/bits/mathcalls-narrow.h" 3 900171: extern _Float32 f32addf128 (_Float128 __x, _Float128 __y) noexcept (true); 900171: 900171: 900171: extern _Float32 f32divf128 (_Float128 __x, _Float128 __y) noexcept (true); 900171: 900171: 900171: extern _Float32 f32fmaf128 (_Float128 __x, _Float128 __y, _Float128 __z) noexcept (true); 900171: 900171: 900171: extern _Float32 f32mulf128 (_Float128 __x, _Float128 __y) noexcept (true); 900171: 900171: 900171: extern _Float32 f32sqrtf128 (_Float128 __x) noexcept (true); 900171: 900171: 900171: extern _Float32 f32subf128 (_Float128 __x, _Float128 __y) noexcept (true); 900171: # 728 "/usr/aarch64-linux-gnu/include/math.h" 2 3 900171: # 747 "/usr/aarch64-linux-gnu/include/math.h" 3 900171: # 1 "/usr/aarch64-linux-gnu/include/bits/mathcalls-narrow.h" 1 3 900171: # 24 "/usr/aarch64-linux-gnu/include/bits/mathcalls-narrow.h" 3 900171: extern _Float32x f32xaddf64 (_Float64 __x, _Float64 __y) noexcept (true); 900171: 900171: 900171: extern _Float32x f32xdivf64 (_Float64 __x, _Float64 __y) noexcept (true); 900171: 900171: 900171: extern _Float32x f32xfmaf64 (_Float64 __x, _Float64 __y, _Float64 __z) noexcept (true); 900171: 900171: 900171: extern _Float32x f32xmulf64 (_Float64 __x, _Float64 __y) noexcept (true); 900171: 900171: 900171: extern _Float32x f32xsqrtf64 (_Float64 __x) noexcept (true); 900171: 900171: 900171: extern _Float32x f32xsubf64 (_Float64 __x, _Float64 __y) noexcept (true); 900171: # 748 "/usr/aarch64-linux-gnu/include/math.h" 2 3 900171: # 757 "/usr/aarch64-linux-gnu/include/math.h" 3 900171: # 1 "/usr/aarch64-linux-gnu/include/bits/mathcalls-narrow.h" 1 3 900171: # 24 "/usr/aarch64-linux-gnu/include/bits/mathcalls-narrow.h" 3 900171: extern _Float32x f32xaddf64x (_Float64x __x, _Float64x __y) noexcept (true); 900171: 900171: 900171: extern _Float32x f32xdivf64x (_Float64x __x, _Float64x __y) noexcept (true); 900171: 900171: 900171: extern _Float32x f32xfmaf64x (_Float64x __x, _Float64x __y, _Float64x __z) noexcept (true); 900171: 900171: 900171: extern _Float32x f32xmulf64x (_Float64x __x, _Float64x __y) noexcept (true); 900171: 900171: 900171: extern _Float32x f32xsqrtf64x (_Float64x __x) noexcept (true); 900171: 900171: 900171: extern _Float32x f32xsubf64x (_Float64x __x, _Float64x __y) noexcept (true); 900171: # 758 "/usr/aarch64-linux-gnu/include/math.h" 2 3 900171: # 767 "/usr/aarch64-linux-gnu/include/math.h" 3 900171: # 1 "/usr/aarch64-linux-gnu/include/bits/mathcalls-narrow.h" 1 3 900171: # 24 "/usr/aarch64-linux-gnu/include/bits/mathcalls-narrow.h" 3 900171: extern _Float32x f32xaddf128 (_Float128 __x, _Float128 __y) noexcept (true); 900171: 900171: 900171: extern _Float32x f32xdivf128 (_Float128 __x, _Float128 __y) noexcept (true); 900171: 900171: 900171: extern _Float32x f32xfmaf128 (_Float128 __x, _Float128 __y, _Float128 __z) noexcept (true); 900171: 900171: 900171: extern _Float32x f32xmulf128 (_Float128 __x, _Float128 __y) noexcept (true); 900171: 900171: 900171: extern _Float32x f32xsqrtf128 (_Float128 __x) noexcept (true); 900171: 900171: 900171: extern _Float32x f32xsubf128 (_Float128 __x, _Float128 __y) noexcept (true); 900171: # 768 "/usr/aarch64-linux-gnu/include/math.h" 2 3 900171: # 787 "/usr/aarch64-linux-gnu/include/math.h" 3 900171: # 1 "/usr/aarch64-linux-gnu/include/bits/mathcalls-narrow.h" 1 3 900171: # 24 "/usr/aarch64-linux-gnu/include/bits/mathcalls-narrow.h" 3 900171: extern _Float64 f64addf64x (_Float64x __x, _Float64x __y) noexcept (true); 900171: 900171: 900171: extern _Float64 f64divf64x (_Float64x __x, _Float64x __y) noexcept (true); 900171: 900171: 900171: extern _Float64 f64fmaf64x (_Float64x __x, _Float64x __y, _Float64x __z) noexcept (true); 900171: 900171: 900171: extern _Float64 f64mulf64x (_Float64x __x, _Float64x __y) noexcept (true); 900171: 900171: 900171: extern _Float64 f64sqrtf64x (_Float64x __x) noexcept (true); 900171: 900171: 900171: extern _Float64 f64subf64x (_Float64x __x, _Float64x __y) noexcept (true); 900171: # 788 "/usr/aarch64-linux-gnu/include/math.h" 2 3 900171: # 797 "/usr/aarch64-linux-gnu/include/math.h" 3 900171: # 1 "/usr/aarch64-linux-gnu/include/bits/mathcalls-narrow.h" 1 3 900171: # 24 "/usr/aarch64-linux-gnu/include/bits/mathcalls-narrow.h" 3 900171: extern _Float64 f64addf128 (_Float128 __x, _Float128 __y) noexcept (true); 900171: 900171: 900171: extern _Float64 f64divf128 (_Float128 __x, _Float128 __y) noexcept (true); 900171: 900171: 900171: extern _Float64 f64fmaf128 (_Float128 __x, _Float128 __y, _Float128 __z) noexcept (true); 900171: 900171: 900171: extern _Float64 f64mulf128 (_Float128 __x, _Float128 __y) noexcept (true); 900171: 900171: 900171: extern _Float64 f64sqrtf128 (_Float128 __x) noexcept (true); 900171: 900171: 900171: extern _Float64 f64subf128 (_Float128 __x, _Float128 __y) noexcept (true); 900171: # 798 "/usr/aarch64-linux-gnu/include/math.h" 2 3 900171: # 817 "/usr/aarch64-linux-gnu/include/math.h" 3 900171: # 1 "/usr/aarch64-linux-gnu/include/bits/mathcalls-narrow.h" 1 3 900171: # 24 "/usr/aarch64-linux-gnu/include/bits/mathcalls-narrow.h" 3 900171: extern _Float64x f64xaddf128 (_Float128 __x, _Float128 __y) noexcept (true); 900171: 900171: 900171: extern _Float64x f64xdivf128 (_Float128 __x, _Float128 __y) noexcept (true); 900171: 900171: 900171: extern _Float64x f64xfmaf128 (_Float128 __x, _Float128 __y, _Float128 __z) noexcept (true); 900171: 900171: 900171: extern _Float64x f64xmulf128 (_Float128 __x, _Float128 __y) noexcept (true); 900171: 900171: 900171: extern _Float64x f64xsqrtf128 (_Float128 __x) noexcept (true); 900171: 900171: 900171: extern _Float64x f64xsubf128 (_Float128 __x, _Float128 __y) noexcept (true); 900171: # 818 "/usr/aarch64-linux-gnu/include/math.h" 2 3 900171: # 854 "/usr/aarch64-linux-gnu/include/math.h" 3 900171: extern int signgam; 900171: # 934 "/usr/aarch64-linux-gnu/include/math.h" 3 900171: enum 900171: { 900171: FP_NAN = 900171: 900171: 0, 900171: FP_INFINITE = 900171: 900171: 1, 900171: FP_ZERO = 900171: 900171: 2, 900171: FP_SUBNORMAL = 900171: 900171: 3, 900171: FP_NORMAL = 900171: 900171: 4 900171: }; 900171: # 1054 "/usr/aarch64-linux-gnu/include/math.h" 3 900171: # 1 "/usr/aarch64-linux-gnu/include/bits/iscanonical.h" 1 3 900171: # 1055 "/usr/aarch64-linux-gnu/include/math.h" 2 3 900171: # 1066 "/usr/aarch64-linux-gnu/include/math.h" 3 900171: extern "C++" { 900171: inline int issignaling (float __val) { return __issignalingf (__val); } 900171: inline int issignaling (double __val) { return __issignaling (__val); } 900171: inline int 900171: issignaling (long double __val) 900171: { 900171: 900171: 900171: 900171: return __issignalingl (__val); 900171: 900171: } 900171: 900171: 900171: 900171: 900171: 900171: } 900171: # 1097 "/usr/aarch64-linux-gnu/include/math.h" 3 900171: extern "C++" { 900171: # 1128 "/usr/aarch64-linux-gnu/include/math.h" 3 900171: template inline bool 900171: iszero (__T __val) 900171: { 900171: return __val == 0; 900171: } 900171: 900171: } 900171: # 1363 "/usr/aarch64-linux-gnu/include/math.h" 3 900171: extern "C++" { 900171: template struct __iseqsig_type; 900171: 900171: template<> struct __iseqsig_type 900171: { 900171: static int __call (float __x, float __y) throw () 900171: { 900171: return __iseqsigf (__x, __y); 900171: } 900171: }; 900171: 900171: template<> struct __iseqsig_type 900171: { 900171: static int __call (double __x, double __y) throw () 900171: { 900171: return __iseqsig (__x, __y); 900171: } 900171: }; 900171: 900171: template<> struct __iseqsig_type 900171: { 900171: static int __call (long double __x, long double __y) throw () 900171: { 900171: 900171: return __iseqsigl (__x, __y); 900171: 900171: 900171: 900171: } 900171: }; 900171: # 1454 "/usr/aarch64-linux-gnu/include/math.h" 3 900171: template 900171: inline int 900171: iseqsig (_T1 __x, _T2 __y) throw () 900171: { 900171: 900171: typedef decltype (((__x) + (__y) + 0.0f)) _T3; 900171: 900171: 900171: 900171: return __iseqsig_type<_T3>::__call (__x, __y); 900171: } 900171: 900171: } 900171: 900171: 900171: 900171: 900171: } 900171: # 46 "/usr/aarch64-linux-gnu/include/c++/12/cmath" 2 3 900171: 900171: # 1 "/usr/aarch64-linux-gnu/include/c++/12/bits/std_abs.h" 1 3 900171: # 33 "/usr/aarch64-linux-gnu/include/c++/12/bits/std_abs.h" 3 900171: 900171: # 34 "/usr/aarch64-linux-gnu/include/c++/12/bits/std_abs.h" 3 900171: 900171: 900171: 900171: 900171: # 1 "/usr/aarch64-linux-gnu/include/stdlib.h" 1 3 900171: # 26 "/usr/aarch64-linux-gnu/include/stdlib.h" 3 900171: # 1 "/usr/aarch64-linux-gnu/include/bits/libc-header-start.h" 1 3 900171: # 27 "/usr/aarch64-linux-gnu/include/stdlib.h" 2 3 900171: 900171: 900171: 900171: 900171: 900171: # 1 "/usr/lib/gcc-cross/aarch64-linux-gnu/12/include/stddef.h" 1 3 4 900171: # 214 "/usr/lib/gcc-cross/aarch64-linux-gnu/12/include/stddef.h" 3 4 900171: typedef long unsigned int size_t; 900171: # 33 "/usr/aarch64-linux-gnu/include/stdlib.h" 2 3 900171: 900171: extern "C" { 900171: 900171: 900171: 900171: 900171: 900171: # 1 "/usr/aarch64-linux-gnu/include/bits/waitflags.h" 1 3 900171: # 41 "/usr/aarch64-linux-gnu/include/stdlib.h" 2 3 900171: # 1 "/usr/aarch64-linux-gnu/include/bits/waitstatus.h" 1 3 900171: # 42 "/usr/aarch64-linux-gnu/include/stdlib.h" 2 3 900171: # 59 "/usr/aarch64-linux-gnu/include/stdlib.h" 3 900171: typedef struct 900171: { 900171: int quot; 900171: int rem; 900171: } div_t; 900171: 900171: 900171: 900171: typedef struct 900171: { 900171: long int quot; 900171: long int rem; 900171: } ldiv_t; 900171: 900171: 900171: 900171: 900171: 900171: __extension__ typedef struct 900171: { 900171: long long int quot; 900171: long long int rem; 900171: } lldiv_t; 900171: # 98 "/usr/aarch64-linux-gnu/include/stdlib.h" 3 900171: extern size_t __ctype_get_mb_cur_max (void) noexcept (true) __attribute__ ((__warn_unused_result__)); 900171: 900171: 900171: 900171: extern double atof (const char *__nptr) 900171: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 900171: 900171: extern int atoi (const char *__nptr) 900171: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 900171: 900171: extern long int atol (const char *__nptr) 900171: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 900171: 900171: 900171: 900171: __extension__ extern long long int atoll (const char *__nptr) 900171: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 900171: 900171: 900171: 900171: extern double strtod (const char *__restrict __nptr, 900171: char **__restrict __endptr) 900171: noexcept (true) __attribute__ ((__nonnull__ (1))); 900171: 900171: 900171: 900171: extern float strtof (const char *__restrict __nptr, 900171: char **__restrict __endptr) noexcept (true) __attribute__ ((__nonnull__ (1))); 900171: 900171: extern long double strtold (const char *__restrict __nptr, 900171: char **__restrict __endptr) 900171: noexcept (true) __attribute__ ((__nonnull__ (1))); 900171: # 141 "/usr/aarch64-linux-gnu/include/stdlib.h" 3 900171: extern _Float32 strtof32 (const char *__restrict __nptr, 900171: char **__restrict __endptr) 900171: noexcept (true) __attribute__ ((__nonnull__ (1))); 900171: 900171: 900171: 900171: extern _Float64 strtof64 (const char *__restrict __nptr, 900171: char **__restrict __endptr) 900171: noexcept (true) __attribute__ ((__nonnull__ (1))); 900171: 900171: 900171: 900171: extern _Float128 strtof128 (const char *__restrict __nptr, 900171: char **__restrict __endptr) 900171: noexcept (true) __attribute__ ((__nonnull__ (1))); 900171: 900171: 900171: 900171: extern _Float32x strtof32x (const char *__restrict __nptr, 900171: char **__restrict __endptr) 900171: noexcept (true) __attribute__ ((__nonnull__ (1))); 900171: 900171: 900171: 900171: extern _Float64x strtof64x (const char *__restrict __nptr, 900171: char **__restrict __endptr) 900171: noexcept (true) __attribute__ ((__nonnull__ (1))); 900171: # 177 "/usr/aarch64-linux-gnu/include/stdlib.h" 3 900171: extern long int strtol (const char *__restrict __nptr, 900171: char **__restrict __endptr, int __base) 900171: noexcept (true) __attribute__ ((__nonnull__ (1))); 900171: 900171: extern unsigned long int strtoul (const char *__restrict __nptr, 900171: char **__restrict __endptr, int __base) 900171: noexcept (true) __attribute__ ((__nonnull__ (1))); 900171: 900171: 900171: 900171: __extension__ 900171: extern long long int strtoq (const char *__restrict __nptr, 900171: char **__restrict __endptr, int __base) 900171: noexcept (true) __attribute__ ((__nonnull__ (1))); 900171: 900171: __extension__ 900171: extern unsigned long long int strtouq (const char *__restrict __nptr, 900171: char **__restrict __endptr, int __base) 900171: noexcept (true) __attribute__ ((__nonnull__ (1))); 900171: 900171: 900171: 900171: 900171: __extension__ 900171: extern long long int strtoll (const char *__restrict __nptr, 900171: char **__restrict __endptr, int __base) 900171: noexcept (true) __attribute__ ((__nonnull__ (1))); 900171: 900171: __extension__ 900171: extern unsigned long long int strtoull (const char *__restrict __nptr, 900171: char **__restrict __endptr, int __base) 900171: noexcept (true) __attribute__ ((__nonnull__ (1))); 900171: 900171: 900171: 900171: 900171: extern int strfromd (char *__dest, size_t __size, const char *__format, 900171: double __f) 900171: noexcept (true) __attribute__ ((__nonnull__ (3))); 900171: 900171: extern int strfromf (char *__dest, size_t __size, const char *__format, 900171: float __f) 900171: noexcept (true) __attribute__ ((__nonnull__ (3))); 900171: 900171: extern int strfroml (char *__dest, size_t __size, const char *__format, 900171: long double __f) 900171: noexcept (true) __attribute__ ((__nonnull__ (3))); 900171: # 233 "/usr/aarch64-linux-gnu/include/stdlib.h" 3 900171: extern int strfromf32 (char *__dest, size_t __size, const char * __format, 900171: _Float32 __f) 900171: noexcept (true) __attribute__ ((__nonnull__ (3))); 900171: 900171: 900171: 900171: extern int strfromf64 (char *__dest, size_t __size, const char * __format, 900171: _Float64 __f) 900171: noexcept (true) __attribute__ ((__nonnull__ (3))); 900171: 900171: 900171: 900171: extern int strfromf128 (char *__dest, size_t __size, const char * __format, 900171: _Float128 __f) 900171: noexcept (true) __attribute__ ((__nonnull__ (3))); 900171: 900171: 900171: 900171: extern int strfromf32x (char *__dest, size_t __size, const char * __format, 900171: _Float32x __f) 900171: noexcept (true) __attribute__ ((__nonnull__ (3))); 900171: 900171: 900171: 900171: extern int strfromf64x (char *__dest, size_t __size, const char * __format, 900171: _Float64x __f) 900171: noexcept (true) __attribute__ ((__nonnull__ (3))); 900171: # 273 "/usr/aarch64-linux-gnu/include/stdlib.h" 3 900171: # 1 "/usr/aarch64-linux-gnu/include/bits/types/locale_t.h" 1 3 900171: # 22 "/usr/aarch64-linux-gnu/include/bits/types/locale_t.h" 3 900171: # 1 "/usr/aarch64-linux-gnu/include/bits/types/__locale_t.h" 1 3 900171: # 27 "/usr/aarch64-linux-gnu/include/bits/types/__locale_t.h" 3 900171: struct __locale_struct 900171: { 900171: 900171: struct __locale_data *__locales[13]; 900171: 900171: 900171: const unsigned short int *__ctype_b; 900171: const int *__ctype_tolower; 900171: const int *__ctype_toupper; 900171: 900171: 900171: const char *__names[13]; 900171: }; 900171: 900171: typedef struct __locale_struct *__locale_t; 900171: # 23 "/usr/aarch64-linux-gnu/include/bits/types/locale_t.h" 2 3 900171: 900171: typedef __locale_t locale_t; 900171: # 274 "/usr/aarch64-linux-gnu/include/stdlib.h" 2 3 900171: 900171: extern long int strtol_l (const char *__restrict __nptr, 900171: char **__restrict __endptr, int __base, 900171: locale_t __loc) noexcept (true) __attribute__ ((__nonnull__ (1, 4))); 900171: 900171: extern unsigned long int strtoul_l (const char *__restrict __nptr, 900171: char **__restrict __endptr, 900171: int __base, locale_t __loc) 900171: noexcept (true) __attribute__ ((__nonnull__ (1, 4))); 900171: 900171: __extension__ 900171: extern long long int strtoll_l (const char *__restrict __nptr, 900171: char **__restrict __endptr, int __base, 900171: locale_t __loc) 900171: noexcept (true) __attribute__ ((__nonnull__ (1, 4))); 900171: 900171: __extension__ 900171: extern unsigned long long int strtoull_l (const char *__restrict __nptr, 900171: char **__restrict __endptr, 900171: int __base, locale_t __loc) 900171: noexcept (true) __attribute__ ((__nonnull__ (1, 4))); 900171: 900171: extern double strtod_l (const char *__restrict __nptr, 900171: char **__restrict __endptr, locale_t __loc) 900171: noexcept (true) __attribute__ ((__nonnull__ (1, 3))); 900171: 900171: extern float strtof_l (const char *__restrict __nptr, 900171: char **__restrict __endptr, locale_t __loc) 900171: noexcept (true) __attribute__ ((__nonnull__ (1, 3))); 900171: 900171: extern long double strtold_l (const char *__restrict __nptr, 900171: char **__restrict __endptr, 900171: locale_t __loc) 900171: noexcept (true) __attribute__ ((__nonnull__ (1, 3))); 900171: # 317 "/usr/aarch64-linux-gnu/include/stdlib.h" 3 900171: extern _Float32 strtof32_l (const char *__restrict __nptr, 900171: char **__restrict __endptr, 900171: locale_t __loc) 900171: noexcept (true) __attribute__ ((__nonnull__ (1, 3))); 900171: 900171: 900171: 900171: extern _Float64 strtof64_l (const char *__restrict __nptr, 900171: char **__restrict __endptr, 900171: locale_t __loc) 900171: noexcept (true) __attribute__ ((__nonnull__ (1, 3))); 900171: 900171: 900171: 900171: extern _Float128 strtof128_l (const char *__restrict __nptr, 900171: char **__restrict __endptr, 900171: locale_t __loc) 900171: noexcept (true) __attribute__ ((__nonnull__ (1, 3))); 900171: 900171: 900171: 900171: extern _Float32x strtof32x_l (const char *__restrict __nptr, 900171: char **__restrict __endptr, 900171: locale_t __loc) 900171: noexcept (true) __attribute__ ((__nonnull__ (1, 3))); 900171: 900171: 900171: 900171: extern _Float64x strtof64x_l (const char *__restrict __nptr, 900171: char **__restrict __endptr, 900171: locale_t __loc) 900171: noexcept (true) __attribute__ ((__nonnull__ (1, 3))); 900171: # 361 "/usr/aarch64-linux-gnu/include/stdlib.h" 3 900171: extern __inline __attribute__ ((__gnu_inline__)) int 900171: __attribute__ ((__leaf__)) atoi (const char *__nptr) noexcept (true) 900171: { 900171: return (int) strtol (__nptr, (char **) __null, 10); 900171: } 900171: extern __inline __attribute__ ((__gnu_inline__)) long int 900171: __attribute__ ((__leaf__)) atol (const char *__nptr) noexcept (true) 900171: { 900171: return strtol (__nptr, (char **) __null, 10); 900171: } 900171: 900171: 900171: __extension__ extern __inline __attribute__ ((__gnu_inline__)) long long int 900171: __attribute__ ((__leaf__)) atoll (const char *__nptr) noexcept (true) 900171: { 900171: return strtoll (__nptr, (char **) __null, 10); 900171: } 900171: # 386 "/usr/aarch64-linux-gnu/include/stdlib.h" 3 900171: extern char *l64a (long int __n) noexcept (true) __attribute__ ((__warn_unused_result__)); 900171: 900171: 900171: extern long int a64l (const char *__s) 900171: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 900171: 900171: 900171: 900171: 900171: # 1 "/usr/aarch64-linux-gnu/include/sys/types.h" 1 3 900171: # 27 "/usr/aarch64-linux-gnu/include/sys/types.h" 3 900171: extern "C" { 900171: 900171: 900171: 900171: 900171: 900171: typedef __u_char u_char; 900171: typedef __u_short u_short; 900171: typedef __u_int u_int; 900171: typedef __u_long u_long; 900171: typedef __quad_t quad_t; 900171: typedef __u_quad_t u_quad_t; 900171: typedef __fsid_t fsid_t; 900171: 900171: 900171: typedef __loff_t loff_t; 900171: 900171: 900171: 900171: 900171: typedef __ino_t ino_t; 900171: 900171: 900171: 900171: 900171: 900171: 900171: typedef __ino64_t ino64_t; 900171: 900171: 900171: 900171: 900171: typedef __dev_t dev_t; 900171: 900171: 900171: 900171: 900171: typedef __gid_t gid_t; 900171: 900171: 900171: 900171: 900171: typedef __mode_t mode_t; 900171: 900171: 900171: 900171: 900171: typedef __nlink_t nlink_t; 900171: 900171: 900171: 900171: 900171: typedef __uid_t uid_t; 900171: 900171: 900171: 900171: 900171: 900171: typedef __off_t off_t; 900171: 900171: 900171: 900171: 900171: 900171: 900171: typedef __off64_t off64_t; 900171: 900171: 900171: 900171: 900171: typedef __pid_t pid_t; 900171: 900171: 900171: 900171: 900171: 900171: typedef __id_t id_t; 900171: 900171: 900171: 900171: 900171: typedef __ssize_t ssize_t; 900171: 900171: 900171: 900171: 900171: 900171: typedef __daddr_t daddr_t; 900171: typedef __caddr_t caddr_t; 900171: 900171: 900171: 900171: 900171: 900171: typedef __key_t key_t; 900171: 900171: 900171: 900171: 900171: # 1 "/usr/aarch64-linux-gnu/include/bits/types/clock_t.h" 1 3 900171: 900171: 900171: 900171: 900171: 900171: 900171: typedef __clock_t clock_t; 900171: # 127 "/usr/aarch64-linux-gnu/include/sys/types.h" 2 3 900171: 900171: # 1 "/usr/aarch64-linux-gnu/include/bits/types/clockid_t.h" 1 3 900171: 900171: 900171: 900171: 900171: 900171: 900171: typedef __clockid_t clockid_t; 900171: # 129 "/usr/aarch64-linux-gnu/include/sys/types.h" 2 3 900171: # 1 "/usr/aarch64-linux-gnu/include/bits/types/time_t.h" 1 3 900171: # 10 "/usr/aarch64-linux-gnu/include/bits/types/time_t.h" 3 900171: typedef __time_t time_t; 900171: # 130 "/usr/aarch64-linux-gnu/include/sys/types.h" 2 3 900171: # 1 "/usr/aarch64-linux-gnu/include/bits/types/timer_t.h" 1 3 900171: 900171: 900171: 900171: 900171: 900171: 900171: typedef __timer_t timer_t; 900171: # 131 "/usr/aarch64-linux-gnu/include/sys/types.h" 2 3 900171: 900171: 900171: 900171: typedef __useconds_t useconds_t; 900171: 900171: 900171: 900171: typedef __suseconds_t suseconds_t; 900171: 900171: 900171: 900171: 900171: 900171: # 1 "/usr/lib/gcc-cross/aarch64-linux-gnu/12/include/stddef.h" 1 3 4 900171: # 145 "/usr/aarch64-linux-gnu/include/sys/types.h" 2 3 900171: 900171: 900171: 900171: typedef unsigned long int ulong; 900171: typedef unsigned short int ushort; 900171: typedef unsigned int uint; 900171: 900171: 900171: 900171: 900171: # 1 "/usr/aarch64-linux-gnu/include/bits/stdint-intn.h" 1 3 900171: # 24 "/usr/aarch64-linux-gnu/include/bits/stdint-intn.h" 3 900171: typedef __int8_t int8_t; 900171: typedef __int16_t int16_t; 900171: typedef __int32_t int32_t; 900171: typedef __int64_t int64_t; 900171: # 156 "/usr/aarch64-linux-gnu/include/sys/types.h" 2 3 900171: 900171: 900171: typedef __uint8_t u_int8_t; 900171: typedef __uint16_t u_int16_t; 900171: typedef __uint32_t u_int32_t; 900171: typedef __uint64_t u_int64_t; 900171: 900171: 900171: typedef int register_t __attribute__ ((__mode__ (__word__))); 900171: # 176 "/usr/aarch64-linux-gnu/include/sys/types.h" 3 900171: # 1 "/usr/aarch64-linux-gnu/include/endian.h" 1 3 900171: # 24 "/usr/aarch64-linux-gnu/include/endian.h" 3 900171: # 1 "/usr/aarch64-linux-gnu/include/bits/endian.h" 1 3 900171: # 35 "/usr/aarch64-linux-gnu/include/bits/endian.h" 3 900171: # 1 "/usr/aarch64-linux-gnu/include/bits/endianness.h" 1 3 900171: # 36 "/usr/aarch64-linux-gnu/include/bits/endian.h" 2 3 900171: # 25 "/usr/aarch64-linux-gnu/include/endian.h" 2 3 900171: # 35 "/usr/aarch64-linux-gnu/include/endian.h" 3 900171: # 1 "/usr/aarch64-linux-gnu/include/bits/byteswap.h" 1 3 900171: # 33 "/usr/aarch64-linux-gnu/include/bits/byteswap.h" 3 900171: static __inline __uint16_t 900171: __bswap_16 (__uint16_t __bsx) 900171: { 900171: 900171: return __builtin_bswap16 (__bsx); 900171: 900171: 900171: 900171: } 900171: 900171: 900171: 900171: 900171: 900171: 900171: static __inline __uint32_t 900171: __bswap_32 (__uint32_t __bsx) 900171: { 900171: 900171: return __builtin_bswap32 (__bsx); 900171: 900171: 900171: 900171: } 900171: # 69 "/usr/aarch64-linux-gnu/include/bits/byteswap.h" 3 900171: __extension__ static __inline __uint64_t 900171: __bswap_64 (__uint64_t __bsx) 900171: { 900171: 900171: return __builtin_bswap64 (__bsx); 900171: 900171: 900171: 900171: } 900171: # 36 "/usr/aarch64-linux-gnu/include/endian.h" 2 3 900171: # 1 "/usr/aarch64-linux-gnu/include/bits/uintn-identity.h" 1 3 900171: # 32 "/usr/aarch64-linux-gnu/include/bits/uintn-identity.h" 3 900171: static __inline __uint16_t 900171: __uint16_identity (__uint16_t __x) 900171: { 900171: return __x; 900171: } 900171: 900171: static __inline __uint32_t 900171: __uint32_identity (__uint32_t __x) 900171: { 900171: return __x; 900171: } 900171: 900171: static __inline __uint64_t 900171: __uint64_identity (__uint64_t __x) 900171: { 900171: return __x; 900171: } 900171: # 37 "/usr/aarch64-linux-gnu/include/endian.h" 2 3 900171: # 177 "/usr/aarch64-linux-gnu/include/sys/types.h" 2 3 900171: 900171: 900171: # 1 "/usr/aarch64-linux-gnu/include/sys/select.h" 1 3 900171: # 30 "/usr/aarch64-linux-gnu/include/sys/select.h" 3 900171: # 1 "/usr/aarch64-linux-gnu/include/bits/select.h" 1 3 900171: # 31 "/usr/aarch64-linux-gnu/include/sys/select.h" 2 3 900171: 900171: 900171: # 1 "/usr/aarch64-linux-gnu/include/bits/types/sigset_t.h" 1 3 900171: 900171: 900171: 900171: # 1 "/usr/aarch64-linux-gnu/include/bits/types/__sigset_t.h" 1 3 900171: 900171: 900171: 900171: 900171: typedef struct 900171: { 900171: unsigned long int __val[(1024 / (8 * sizeof (unsigned long int)))]; 900171: } __sigset_t; 900171: # 5 "/usr/aarch64-linux-gnu/include/bits/types/sigset_t.h" 2 3 900171: 900171: 900171: typedef __sigset_t sigset_t; 900171: # 34 "/usr/aarch64-linux-gnu/include/sys/select.h" 2 3 900171: 900171: 900171: 900171: # 1 "/usr/aarch64-linux-gnu/include/bits/types/struct_timeval.h" 1 3 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: struct timeval 900171: { 900171: 900171: 900171: 900171: 900171: __time_t tv_sec; 900171: __suseconds_t tv_usec; 900171: 900171: }; 900171: # 38 "/usr/aarch64-linux-gnu/include/sys/select.h" 2 3 900171: 900171: # 1 "/usr/aarch64-linux-gnu/include/bits/types/struct_timespec.h" 1 3 900171: # 11 "/usr/aarch64-linux-gnu/include/bits/types/struct_timespec.h" 3 900171: struct timespec 900171: { 900171: 900171: 900171: 900171: __time_t tv_sec; 900171: 900171: 900171: 900171: 900171: __syscall_slong_t tv_nsec; 900171: # 31 "/usr/aarch64-linux-gnu/include/bits/types/struct_timespec.h" 3 900171: }; 900171: # 40 "/usr/aarch64-linux-gnu/include/sys/select.h" 2 3 900171: # 49 "/usr/aarch64-linux-gnu/include/sys/select.h" 3 900171: typedef long int __fd_mask; 900171: # 59 "/usr/aarch64-linux-gnu/include/sys/select.h" 3 900171: typedef struct 900171: { 900171: 900171: 900171: 900171: __fd_mask fds_bits[1024 / (8 * (int) sizeof (__fd_mask))]; 900171: 900171: 900171: 900171: 900171: 900171: } fd_set; 900171: 900171: 900171: 900171: 900171: 900171: 900171: typedef __fd_mask fd_mask; 900171: # 91 "/usr/aarch64-linux-gnu/include/sys/select.h" 3 900171: extern "C" { 900171: # 102 "/usr/aarch64-linux-gnu/include/sys/select.h" 3 900171: extern int select (int __nfds, fd_set *__restrict __readfds, 900171: fd_set *__restrict __writefds, 900171: fd_set *__restrict __exceptfds, 900171: struct timeval *__restrict __timeout); 900171: # 127 "/usr/aarch64-linux-gnu/include/sys/select.h" 3 900171: extern int pselect (int __nfds, fd_set *__restrict __readfds, 900171: fd_set *__restrict __writefds, 900171: fd_set *__restrict __exceptfds, 900171: const struct timespec *__restrict __timeout, 900171: const __sigset_t *__restrict __sigmask); 900171: # 150 "/usr/aarch64-linux-gnu/include/sys/select.h" 3 900171: # 1 "/usr/aarch64-linux-gnu/include/bits/select2.h" 1 3 900171: # 24 "/usr/aarch64-linux-gnu/include/bits/select2.h" 3 900171: extern long int __fdelt_chk (long int __d); 900171: extern long int __fdelt_warn (long int __d) 900171: __attribute__((__warning__ ("bit outside of fd_set selected"))); 900171: # 151 "/usr/aarch64-linux-gnu/include/sys/select.h" 2 3 900171: 900171: 900171: } 900171: # 180 "/usr/aarch64-linux-gnu/include/sys/types.h" 2 3 900171: 900171: 900171: 900171: 900171: 900171: typedef __blksize_t blksize_t; 900171: 900171: 900171: 900171: 900171: 900171: 900171: typedef __blkcnt_t blkcnt_t; 900171: 900171: 900171: 900171: typedef __fsblkcnt_t fsblkcnt_t; 900171: 900171: 900171: 900171: typedef __fsfilcnt_t fsfilcnt_t; 900171: # 219 "/usr/aarch64-linux-gnu/include/sys/types.h" 3 900171: typedef __blkcnt64_t blkcnt64_t; 900171: typedef __fsblkcnt64_t fsblkcnt64_t; 900171: typedef __fsfilcnt64_t fsfilcnt64_t; 900171: 900171: 900171: 900171: 900171: 900171: # 1 "/usr/aarch64-linux-gnu/include/bits/pthreadtypes.h" 1 3 900171: # 23 "/usr/aarch64-linux-gnu/include/bits/pthreadtypes.h" 3 900171: # 1 "/usr/aarch64-linux-gnu/include/bits/thread-shared-types.h" 1 3 900171: # 44 "/usr/aarch64-linux-gnu/include/bits/thread-shared-types.h" 3 900171: # 1 "/usr/aarch64-linux-gnu/include/bits/pthreadtypes-arch.h" 1 3 900171: # 45 "/usr/aarch64-linux-gnu/include/bits/thread-shared-types.h" 2 3 900171: 900171: # 1 "/usr/aarch64-linux-gnu/include/bits/atomic_wide_counter.h" 1 3 900171: # 25 "/usr/aarch64-linux-gnu/include/bits/atomic_wide_counter.h" 3 900171: typedef union 900171: { 900171: __extension__ unsigned long long int __value64; 900171: struct 900171: { 900171: unsigned int __low; 900171: unsigned int __high; 900171: } __value32; 900171: } __atomic_wide_counter; 900171: # 47 "/usr/aarch64-linux-gnu/include/bits/thread-shared-types.h" 2 3 900171: 900171: 900171: 900171: 900171: typedef struct __pthread_internal_list 900171: { 900171: struct __pthread_internal_list *__prev; 900171: struct __pthread_internal_list *__next; 900171: } __pthread_list_t; 900171: 900171: typedef struct __pthread_internal_slist 900171: { 900171: struct __pthread_internal_slist *__next; 900171: } __pthread_slist_t; 900171: # 76 "/usr/aarch64-linux-gnu/include/bits/thread-shared-types.h" 3 900171: # 1 "/usr/aarch64-linux-gnu/include/bits/struct_mutex.h" 1 3 900171: # 27 "/usr/aarch64-linux-gnu/include/bits/struct_mutex.h" 3 900171: struct __pthread_mutex_s 900171: { 900171: int __lock ; 900171: unsigned int __count; 900171: int __owner; 900171: 900171: unsigned int __nusers; 900171: # 58 "/usr/aarch64-linux-gnu/include/bits/struct_mutex.h" 3 900171: int __kind; 900171: 900171: 900171: 900171: 900171: int __spins; 900171: __pthread_list_t __list; 900171: # 74 "/usr/aarch64-linux-gnu/include/bits/struct_mutex.h" 3 900171: }; 900171: # 77 "/usr/aarch64-linux-gnu/include/bits/thread-shared-types.h" 2 3 900171: # 89 "/usr/aarch64-linux-gnu/include/bits/thread-shared-types.h" 3 900171: # 1 "/usr/aarch64-linux-gnu/include/bits/struct_rwlock.h" 1 3 900171: # 23 "/usr/aarch64-linux-gnu/include/bits/struct_rwlock.h" 3 900171: struct __pthread_rwlock_arch_t 900171: { 900171: unsigned int __readers; 900171: unsigned int __writers; 900171: unsigned int __wrphase_futex; 900171: unsigned int __writers_futex; 900171: unsigned int __pad3; 900171: unsigned int __pad4; 900171: int __cur_writer; 900171: int __shared; 900171: unsigned long int __pad1; 900171: unsigned long int __pad2; 900171: unsigned int __flags; 900171: }; 900171: # 90 "/usr/aarch64-linux-gnu/include/bits/thread-shared-types.h" 2 3 900171: 900171: 900171: 900171: 900171: struct __pthread_cond_s 900171: { 900171: __atomic_wide_counter __wseq; 900171: __atomic_wide_counter __g1_start; 900171: unsigned int __g_refs[2] ; 900171: unsigned int __g_size[2]; 900171: unsigned int __g1_orig_size; 900171: unsigned int __wrefs; 900171: unsigned int __g_signals[2]; 900171: }; 900171: 900171: typedef unsigned int __tss_t; 900171: typedef unsigned long int __thrd_t; 900171: 900171: typedef struct 900171: { 900171: int __data ; 900171: } __once_flag; 900171: # 24 "/usr/aarch64-linux-gnu/include/bits/pthreadtypes.h" 2 3 900171: 900171: 900171: 900171: typedef unsigned long int pthread_t; 900171: 900171: 900171: 900171: 900171: typedef union 900171: { 900171: char __size[8]; 900171: int __align; 900171: } pthread_mutexattr_t; 900171: 900171: 900171: 900171: 900171: typedef union 900171: { 900171: char __size[8]; 900171: int __align; 900171: } pthread_condattr_t; 900171: 900171: 900171: 900171: typedef unsigned int pthread_key_t; 900171: 900171: 900171: 900171: typedef int pthread_once_t; 900171: 900171: 900171: union pthread_attr_t 900171: { 900171: char __size[64]; 900171: long int __align; 900171: }; 900171: 900171: typedef union pthread_attr_t pthread_attr_t; 900171: 900171: 900171: 900171: 900171: typedef union 900171: { 900171: struct __pthread_mutex_s __data; 900171: char __size[48]; 900171: long int __align; 900171: } pthread_mutex_t; 900171: 900171: 900171: typedef union 900171: { 900171: struct __pthread_cond_s __data; 900171: char __size[48]; 900171: __extension__ long long int __align; 900171: } pthread_cond_t; 900171: 900171: 900171: 900171: 900171: 900171: typedef union 900171: { 900171: struct __pthread_rwlock_arch_t __data; 900171: char __size[56]; 900171: long int __align; 900171: } pthread_rwlock_t; 900171: 900171: typedef union 900171: { 900171: char __size[8]; 900171: long int __align; 900171: } pthread_rwlockattr_t; 900171: 900171: 900171: 900171: 900171: 900171: typedef volatile int pthread_spinlock_t; 900171: 900171: 900171: 900171: 900171: typedef union 900171: { 900171: char __size[32]; 900171: long int __align; 900171: } pthread_barrier_t; 900171: 900171: typedef union 900171: { 900171: char __size[8]; 900171: int __align; 900171: } pthread_barrierattr_t; 900171: # 228 "/usr/aarch64-linux-gnu/include/sys/types.h" 2 3 900171: 900171: 900171: } 900171: # 396 "/usr/aarch64-linux-gnu/include/stdlib.h" 2 3 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern long int random (void) noexcept (true); 900171: 900171: 900171: extern void srandom (unsigned int __seed) noexcept (true); 900171: 900171: 900171: 900171: 900171: 900171: extern char *initstate (unsigned int __seed, char *__statebuf, 900171: size_t __statelen) noexcept (true) __attribute__ ((__nonnull__ (2))); 900171: 900171: 900171: 900171: extern char *setstate (char *__statebuf) noexcept (true) __attribute__ ((__nonnull__ (1))); 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: struct random_data 900171: { 900171: int32_t *fptr; 900171: int32_t *rptr; 900171: int32_t *state; 900171: int rand_type; 900171: int rand_deg; 900171: int rand_sep; 900171: int32_t *end_ptr; 900171: }; 900171: 900171: extern int random_r (struct random_data *__restrict __buf, 900171: int32_t *__restrict __result) noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 900171: 900171: extern int srandom_r (unsigned int __seed, struct random_data *__buf) 900171: noexcept (true) __attribute__ ((__nonnull__ (2))); 900171: 900171: extern int initstate_r (unsigned int __seed, char *__restrict __statebuf, 900171: size_t __statelen, 900171: struct random_data *__restrict __buf) 900171: noexcept (true) __attribute__ ((__nonnull__ (2, 4))); 900171: 900171: extern int setstate_r (char *__restrict __statebuf, 900171: struct random_data *__restrict __buf) 900171: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 900171: 900171: 900171: 900171: 900171: 900171: extern int rand (void) noexcept (true); 900171: 900171: extern void srand (unsigned int __seed) noexcept (true); 900171: 900171: 900171: 900171: extern int rand_r (unsigned int *__seed) noexcept (true); 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern double drand48 (void) noexcept (true); 900171: extern double erand48 (unsigned short int __xsubi[3]) noexcept (true) __attribute__ ((__nonnull__ (1))); 900171: 900171: 900171: extern long int lrand48 (void) noexcept (true); 900171: extern long int nrand48 (unsigned short int __xsubi[3]) 900171: noexcept (true) __attribute__ ((__nonnull__ (1))); 900171: 900171: 900171: extern long int mrand48 (void) noexcept (true); 900171: extern long int jrand48 (unsigned short int __xsubi[3]) 900171: noexcept (true) __attribute__ ((__nonnull__ (1))); 900171: 900171: 900171: extern void srand48 (long int __seedval) noexcept (true); 900171: extern unsigned short int *seed48 (unsigned short int __seed16v[3]) 900171: noexcept (true) __attribute__ ((__nonnull__ (1))); 900171: extern void lcong48 (unsigned short int __param[7]) noexcept (true) __attribute__ ((__nonnull__ (1))); 900171: 900171: 900171: 900171: 900171: 900171: struct drand48_data 900171: { 900171: unsigned short int __x[3]; 900171: unsigned short int __old_x[3]; 900171: unsigned short int __c; 900171: unsigned short int __init; 900171: __extension__ unsigned long long int __a; 900171: 900171: }; 900171: 900171: 900171: extern int drand48_r (struct drand48_data *__restrict __buffer, 900171: double *__restrict __result) noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 900171: extern int erand48_r (unsigned short int __xsubi[3], 900171: struct drand48_data *__restrict __buffer, 900171: double *__restrict __result) noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 900171: 900171: 900171: extern int lrand48_r (struct drand48_data *__restrict __buffer, 900171: long int *__restrict __result) 900171: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 900171: extern int nrand48_r (unsigned short int __xsubi[3], 900171: struct drand48_data *__restrict __buffer, 900171: long int *__restrict __result) 900171: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 900171: 900171: 900171: extern int mrand48_r (struct drand48_data *__restrict __buffer, 900171: long int *__restrict __result) 900171: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 900171: extern int jrand48_r (unsigned short int __xsubi[3], 900171: struct drand48_data *__restrict __buffer, 900171: long int *__restrict __result) 900171: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 900171: 900171: 900171: extern int srand48_r (long int __seedval, struct drand48_data *__buffer) 900171: noexcept (true) __attribute__ ((__nonnull__ (2))); 900171: 900171: extern int seed48_r (unsigned short int __seed16v[3], 900171: struct drand48_data *__buffer) noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 900171: 900171: extern int lcong48_r (unsigned short int __param[7], 900171: struct drand48_data *__buffer) 900171: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 900171: 900171: 900171: extern __uint32_t arc4random (void) 900171: noexcept (true) __attribute__ ((__warn_unused_result__)); 900171: 900171: 900171: extern void arc4random_buf (void *__buf, size_t __size) 900171: noexcept (true) __attribute__ ((__nonnull__ (1))); 900171: 900171: 900171: 900171: extern __uint32_t arc4random_uniform (__uint32_t __upper_bound) 900171: noexcept (true) __attribute__ ((__warn_unused_result__)); 900171: 900171: 900171: 900171: 900171: extern void *malloc (size_t __size) noexcept (true) __attribute__ ((__malloc__)) 900171: __attribute__ ((__alloc_size__ (1))) __attribute__ ((__warn_unused_result__)); 900171: 900171: extern void *calloc (size_t __nmemb, size_t __size) 900171: noexcept (true) __attribute__ ((__malloc__)) __attribute__ ((__alloc_size__ (1, 2))) __attribute__ ((__warn_unused_result__)); 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern void *realloc (void *__ptr, size_t __size) 900171: noexcept (true) __attribute__ ((__warn_unused_result__)) __attribute__ ((__alloc_size__ (2))); 900171: 900171: 900171: extern void free (void *__ptr) noexcept (true); 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern void *reallocarray (void *__ptr, size_t __nmemb, size_t __size) 900171: noexcept (true) __attribute__ ((__warn_unused_result__)) 900171: __attribute__ ((__alloc_size__ (2, 3))) 900171: __attribute__ ((__malloc__ (__builtin_free, 1))); 900171: 900171: 900171: extern void *reallocarray (void *__ptr, size_t __nmemb, size_t __size) 900171: noexcept (true) __attribute__ ((__malloc__ (reallocarray, 1))); 900171: 900171: 900171: 900171: # 1 "/usr/aarch64-linux-gnu/include/alloca.h" 1 3 900171: # 24 "/usr/aarch64-linux-gnu/include/alloca.h" 3 900171: # 1 "/usr/lib/gcc-cross/aarch64-linux-gnu/12/include/stddef.h" 1 3 4 900171: # 25 "/usr/aarch64-linux-gnu/include/alloca.h" 2 3 900171: 900171: extern "C" { 900171: 900171: 900171: 900171: 900171: 900171: extern void *alloca (size_t __size) noexcept (true); 900171: 900171: 900171: 900171: 900171: 900171: } 900171: # 588 "/usr/aarch64-linux-gnu/include/stdlib.h" 2 3 900171: 900171: 900171: 900171: 900171: 900171: extern void *valloc (size_t __size) noexcept (true) __attribute__ ((__malloc__)) 900171: __attribute__ ((__alloc_size__ (1))) __attribute__ ((__warn_unused_result__)); 900171: 900171: 900171: 900171: 900171: extern int posix_memalign (void **__memptr, size_t __alignment, size_t __size) 900171: noexcept (true) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 900171: 900171: 900171: 900171: 900171: extern void *aligned_alloc (size_t __alignment, size_t __size) 900171: noexcept (true) __attribute__ ((__malloc__)) __attribute__ ((__alloc_align__ (1))) 900171: __attribute__ ((__alloc_size__ (2))) __attribute__ ((__warn_unused_result__)); 900171: 900171: 900171: 900171: extern void abort (void) noexcept (true) __attribute__ ((__noreturn__)); 900171: 900171: 900171: 900171: extern int atexit (void (*__func) (void)) noexcept (true) __attribute__ ((__nonnull__ (1))); 900171: 900171: 900171: 900171: 900171: extern "C++" int at_quick_exit (void (*__func) (void)) 900171: noexcept (true) __asm ("at_quick_exit") __attribute__ ((__nonnull__ (1))); 900171: # 630 "/usr/aarch64-linux-gnu/include/stdlib.h" 3 900171: extern int on_exit (void (*__func) (int __status, void *__arg), void *__arg) 900171: noexcept (true) __attribute__ ((__nonnull__ (1))); 900171: 900171: 900171: 900171: 900171: 900171: extern void exit (int __status) noexcept (true) __attribute__ ((__noreturn__)); 900171: 900171: 900171: 900171: 900171: 900171: extern void quick_exit (int __status) noexcept (true) __attribute__ ((__noreturn__)); 900171: 900171: 900171: 900171: 900171: 900171: extern void _Exit (int __status) noexcept (true) __attribute__ ((__noreturn__)); 900171: 900171: 900171: 900171: 900171: extern char *getenv (const char *__name) noexcept (true) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 900171: 900171: 900171: 900171: 900171: extern char *secure_getenv (const char *__name) 900171: noexcept (true) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern int putenv (char *__string) noexcept (true) __attribute__ ((__nonnull__ (1))); 900171: 900171: 900171: 900171: 900171: 900171: extern int setenv (const char *__name, const char *__value, int __replace) 900171: noexcept (true) __attribute__ ((__nonnull__ (2))); 900171: 900171: 900171: extern int unsetenv (const char *__name) noexcept (true) __attribute__ ((__nonnull__ (1))); 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern int clearenv (void) noexcept (true); 900171: # 695 "/usr/aarch64-linux-gnu/include/stdlib.h" 3 900171: extern char *mktemp (char *__template) noexcept (true) __attribute__ ((__nonnull__ (1))); 900171: # 708 "/usr/aarch64-linux-gnu/include/stdlib.h" 3 900171: extern int mkstemp (char *__template) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 900171: # 718 "/usr/aarch64-linux-gnu/include/stdlib.h" 3 900171: extern int mkstemp64 (char *__template) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 900171: # 730 "/usr/aarch64-linux-gnu/include/stdlib.h" 3 900171: extern int mkstemps (char *__template, int __suffixlen) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 900171: # 740 "/usr/aarch64-linux-gnu/include/stdlib.h" 3 900171: extern int mkstemps64 (char *__template, int __suffixlen) 900171: __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 900171: # 751 "/usr/aarch64-linux-gnu/include/stdlib.h" 3 900171: extern char *mkdtemp (char *__template) noexcept (true) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 900171: # 762 "/usr/aarch64-linux-gnu/include/stdlib.h" 3 900171: extern int mkostemp (char *__template, int __flags) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 900171: # 772 "/usr/aarch64-linux-gnu/include/stdlib.h" 3 900171: extern int mkostemp64 (char *__template, int __flags) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 900171: # 782 "/usr/aarch64-linux-gnu/include/stdlib.h" 3 900171: extern int mkostemps (char *__template, int __suffixlen, int __flags) 900171: __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 900171: # 794 "/usr/aarch64-linux-gnu/include/stdlib.h" 3 900171: extern int mkostemps64 (char *__template, int __suffixlen, int __flags) 900171: __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 900171: # 804 "/usr/aarch64-linux-gnu/include/stdlib.h" 3 900171: extern int system (const char *__command) __attribute__ ((__warn_unused_result__)); 900171: 900171: 900171: 900171: 900171: 900171: extern char *canonicalize_file_name (const char *__name) 900171: noexcept (true) __attribute__ ((__nonnull__ (1))) __attribute__ ((__malloc__)) 900171: __attribute__ ((__malloc__ (__builtin_free, 1))) __attribute__ ((__warn_unused_result__)); 900171: # 821 "/usr/aarch64-linux-gnu/include/stdlib.h" 3 900171: extern char *realpath (const char *__restrict __name, 900171: char *__restrict __resolved) noexcept (true) __attribute__ ((__warn_unused_result__)); 900171: 900171: 900171: 900171: 900171: 900171: 900171: typedef int (*__compar_fn_t) (const void *, const void *); 900171: 900171: 900171: typedef __compar_fn_t comparison_fn_t; 900171: 900171: 900171: 900171: typedef int (*__compar_d_fn_t) (const void *, const void *, void *); 900171: 900171: 900171: 900171: 900171: extern void *bsearch (const void *__key, const void *__base, 900171: size_t __nmemb, size_t __size, __compar_fn_t __compar) 900171: __attribute__ ((__nonnull__ (1, 2, 5))) __attribute__ ((__warn_unused_result__)); 900171: 900171: 900171: # 1 "/usr/aarch64-linux-gnu/include/bits/stdlib-bsearch.h" 1 3 900171: # 19 "/usr/aarch64-linux-gnu/include/bits/stdlib-bsearch.h" 3 900171: extern __inline __attribute__ ((__gnu_inline__)) void * 900171: bsearch (const void *__key, const void *__base, size_t __nmemb, size_t __size, 900171: __compar_fn_t __compar) 900171: { 900171: size_t __l, __u, __idx; 900171: const void *__p; 900171: int __comparison; 900171: 900171: __l = 0; 900171: __u = __nmemb; 900171: while (__l < __u) 900171: { 900171: __idx = (__l + __u) / 2; 900171: __p = (const void *) (((const char *) __base) + (__idx * __size)); 900171: __comparison = (*__compar) (__key, __p); 900171: if (__comparison < 0) 900171: __u = __idx; 900171: else if (__comparison > 0) 900171: __l = __idx + 1; 900171: else 900171: { 900171: 900171: #pragma GCC diagnostic push 900171: #pragma GCC diagnostic ignored "-Wcast-qual" 900171: 900171: return (void *) __p; 900171: 900171: #pragma GCC diagnostic pop 900171: 900171: } 900171: } 900171: 900171: return __null; 900171: } 900171: # 847 "/usr/aarch64-linux-gnu/include/stdlib.h" 2 3 900171: 900171: 900171: 900171: 900171: extern void qsort (void *__base, size_t __nmemb, size_t __size, 900171: __compar_fn_t __compar) __attribute__ ((__nonnull__ (1, 4))); 900171: 900171: extern void qsort_r (void *__base, size_t __nmemb, size_t __size, 900171: __compar_d_fn_t __compar, void *__arg) 900171: __attribute__ ((__nonnull__ (1, 4))); 900171: 900171: 900171: 900171: 900171: extern int abs (int __x) noexcept (true) __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__)); 900171: extern long int labs (long int __x) noexcept (true) __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__)); 900171: 900171: 900171: __extension__ extern long long int llabs (long long int __x) 900171: noexcept (true) __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__)); 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern div_t div (int __numer, int __denom) 900171: noexcept (true) __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__)); 900171: extern ldiv_t ldiv (long int __numer, long int __denom) 900171: noexcept (true) __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__)); 900171: 900171: 900171: __extension__ extern lldiv_t lldiv (long long int __numer, 900171: long long int __denom) 900171: noexcept (true) __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__)); 900171: # 893 "/usr/aarch64-linux-gnu/include/stdlib.h" 3 900171: extern char *ecvt (double __value, int __ndigit, int *__restrict __decpt, 900171: int *__restrict __sign) noexcept (true) __attribute__ ((__nonnull__ (3, 4))) __attribute__ ((__warn_unused_result__)); 900171: 900171: 900171: 900171: 900171: extern char *fcvt (double __value, int __ndigit, int *__restrict __decpt, 900171: int *__restrict __sign) noexcept (true) __attribute__ ((__nonnull__ (3, 4))) __attribute__ ((__warn_unused_result__)); 900171: 900171: 900171: 900171: 900171: extern char *gcvt (double __value, int __ndigit, char *__buf) 900171: noexcept (true) __attribute__ ((__nonnull__ (3))) __attribute__ ((__warn_unused_result__)); 900171: 900171: 900171: 900171: 900171: extern char *qecvt (long double __value, int __ndigit, 900171: int *__restrict __decpt, int *__restrict __sign) 900171: noexcept (true) __attribute__ ((__nonnull__ (3, 4))) __attribute__ ((__warn_unused_result__)); 900171: extern char *qfcvt (long double __value, int __ndigit, 900171: int *__restrict __decpt, int *__restrict __sign) 900171: noexcept (true) __attribute__ ((__nonnull__ (3, 4))) __attribute__ ((__warn_unused_result__)); 900171: extern char *qgcvt (long double __value, int __ndigit, char *__buf) 900171: noexcept (true) __attribute__ ((__nonnull__ (3))) __attribute__ ((__warn_unused_result__)); 900171: 900171: 900171: 900171: 900171: extern int ecvt_r (double __value, int __ndigit, int *__restrict __decpt, 900171: int *__restrict __sign, char *__restrict __buf, 900171: size_t __len) noexcept (true) __attribute__ ((__nonnull__ (3, 4, 5))); 900171: extern int fcvt_r (double __value, int __ndigit, int *__restrict __decpt, 900171: int *__restrict __sign, char *__restrict __buf, 900171: size_t __len) noexcept (true) __attribute__ ((__nonnull__ (3, 4, 5))); 900171: 900171: extern int qecvt_r (long double __value, int __ndigit, 900171: int *__restrict __decpt, int *__restrict __sign, 900171: char *__restrict __buf, size_t __len) 900171: noexcept (true) __attribute__ ((__nonnull__ (3, 4, 5))); 900171: extern int qfcvt_r (long double __value, int __ndigit, 900171: int *__restrict __decpt, int *__restrict __sign, 900171: char *__restrict __buf, size_t __len) 900171: noexcept (true) __attribute__ ((__nonnull__ (3, 4, 5))); 900171: 900171: 900171: 900171: 900171: 900171: extern int mblen (const char *__s, size_t __n) noexcept (true); 900171: 900171: 900171: extern int mbtowc (wchar_t *__restrict __pwc, 900171: const char *__restrict __s, size_t __n) noexcept (true); 900171: 900171: 900171: extern int wctomb (char *__s, wchar_t __wchar) noexcept (true); 900171: 900171: 900171: 900171: extern size_t mbstowcs (wchar_t *__restrict __pwcs, 900171: const char *__restrict __s, size_t __n) noexcept (true) 900171: __attribute__ ((__access__ (__read_only__, 2))); 900171: 900171: extern size_t wcstombs (char *__restrict __s, 900171: const wchar_t *__restrict __pwcs, size_t __n) 900171: noexcept (true) 900171: __attribute__ ((__access__ (__write_only__, 1, 3))) 900171: __attribute__ ((__access__ (__read_only__, 2))); 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern int rpmatch (const char *__response) noexcept (true) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 900171: # 980 "/usr/aarch64-linux-gnu/include/stdlib.h" 3 900171: extern int getsubopt (char **__restrict __optionp, 900171: char *const *__restrict __tokens, 900171: char **__restrict __valuep) 900171: noexcept (true) __attribute__ ((__nonnull__ (1, 2, 3))) __attribute__ ((__warn_unused_result__)); 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern int posix_openpt (int __oflag) __attribute__ ((__warn_unused_result__)); 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern int grantpt (int __fd) noexcept (true); 900171: 900171: 900171: 900171: extern int unlockpt (int __fd) noexcept (true); 900171: 900171: 900171: 900171: 900171: extern char *ptsname (int __fd) noexcept (true) __attribute__ ((__warn_unused_result__)); 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern int ptsname_r (int __fd, char *__buf, size_t __buflen) 900171: noexcept (true) __attribute__ ((__nonnull__ (2))) __attribute__ ((__access__ (__write_only__, 2, 3))); 900171: 900171: 900171: extern int getpt (void); 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern int getloadavg (double __loadavg[], int __nelem) 900171: noexcept (true) __attribute__ ((__nonnull__ (1))); 900171: # 1036 "/usr/aarch64-linux-gnu/include/stdlib.h" 3 900171: # 1 "/usr/aarch64-linux-gnu/include/bits/stdlib-float.h" 1 3 900171: # 24 "/usr/aarch64-linux-gnu/include/bits/stdlib-float.h" 3 900171: extern __inline __attribute__ ((__gnu_inline__)) double 900171: __attribute__ ((__leaf__)) atof (const char *__nptr) noexcept (true) 900171: { 900171: return strtod (__nptr, (char **) __null); 900171: } 900171: # 1037 "/usr/aarch64-linux-gnu/include/stdlib.h" 2 3 900171: 900171: 900171: 900171: # 1 "/usr/aarch64-linux-gnu/include/bits/stdlib.h" 1 3 900171: # 23 "/usr/aarch64-linux-gnu/include/bits/stdlib.h" 3 900171: extern char *__realpath_chk (const char *__restrict __name, 900171: char *__restrict __resolved, 900171: size_t __resolvedlen) noexcept (true) __attribute__ ((__warn_unused_result__)); 900171: extern char *__realpath_alias (const char *__restrict __name, char *__restrict __resolved) noexcept (true) __asm__ ("" "realpath") 900171: 900171: __attribute__ ((__warn_unused_result__)); 900171: extern char *__realpath_chk_warn (const char *__restrict __name, char *__restrict __resolved, size_t __resolvedlen) noexcept (true) __asm__ ("" "__realpath_chk") 900171: 900171: 900171: __attribute__ ((__warn_unused_result__)) 900171: __attribute__((__warning__ ("second argument of realpath must be either NULL or at " "least PATH_MAX bytes long buffer"))) 900171: ; 900171: 900171: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) char * 900171: __attribute__ ((__leaf__)) realpath (const char *__restrict __name, char *__restrict __resolved) noexcept (true) 900171: { 900171: size_t sz = __builtin_object_size (__resolved, 2 > 1); 900171: 900171: if (sz == (size_t) -1) 900171: return __realpath_alias (__name, __resolved); 900171: 900171: 900171: 900171: 900171: 900171: return __realpath_chk (__name, __resolved, sz); 900171: } 900171: 900171: 900171: extern int __ptsname_r_chk (int __fd, char *__buf, size_t __buflen, 900171: size_t __nreal) noexcept (true) __attribute__ ((__nonnull__ (2))) 900171: __attribute__ ((__access__ (__write_only__, 2, 3))); 900171: extern int __ptsname_r_alias (int __fd, char *__buf, size_t __buflen) noexcept (true) __asm__ ("" "ptsname_r") 900171: 900171: __attribute__ ((__nonnull__ (2))) __attribute__ ((__access__ (__write_only__, 2, 3))); 900171: extern int __ptsname_r_chk_warn (int __fd, char *__buf, size_t __buflen, size_t __nreal) noexcept (true) __asm__ ("" "__ptsname_r_chk") 900171: 900171: 900171: __attribute__ ((__nonnull__ (2))) __attribute__((__warning__ ("ptsname_r called with buflen bigger than " "size of buf"))) 900171: ; 900171: 900171: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 900171: __attribute__ ((__leaf__)) ptsname_r (int __fd, char *__buf, size_t __buflen) noexcept (true) 900171: { 900171: return (((__builtin_constant_p (__builtin_object_size (__buf, 2 > 1)) && (__builtin_object_size (__buf, 2 > 1)) == (long unsigned int) -1) || (((__typeof (__buflen)) 0 < (__typeof (__buflen)) -1 || (__builtin_constant_p (__buflen) && (__buflen) > 0)) && __builtin_constant_p ((((long unsigned int) (__buflen)) <= ((__builtin_object_size (__buf, 2 > 1))) / ((sizeof (char))))) && (((long unsigned int) (__buflen)) <= ((__builtin_object_size (__buf, 2 > 1))) / ((sizeof (char)))))) ? __ptsname_r_alias (__fd, __buf, __buflen) : ((((__typeof (__buflen)) 0 < (__typeof (__buflen)) -1 || (__builtin_constant_p (__buflen) && (__buflen) > 0)) && __builtin_constant_p ((((long unsigned int) (__buflen)) <= (__builtin_object_size (__buf, 2 > 1)) / (sizeof (char)))) && !(((long unsigned int) (__buflen)) <= (__builtin_object_size (__buf, 2 > 1)) / (sizeof (char)))) ? __ptsname_r_chk_warn (__fd, __buf, __buflen, __builtin_object_size (__buf, 2 > 1)) : __ptsname_r_chk (__fd, __buf, __buflen, __builtin_object_size (__buf, 2 > 1)))) 900171: 900171: ; 900171: } 900171: 900171: 900171: extern int __wctomb_chk (char *__s, wchar_t __wchar, size_t __buflen) 900171: noexcept (true) __attribute__ ((__warn_unused_result__)); 900171: extern int __wctomb_alias (char *__s, wchar_t __wchar) noexcept (true) __asm__ ("" "wctomb") 900171: __attribute__ ((__warn_unused_result__)); 900171: 900171: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) int 900171: __attribute__ ((__leaf__)) wctomb (char *__s, wchar_t __wchar) noexcept (true) 900171: { 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: if (__builtin_object_size (__s, 2 > 1) != (size_t) -1 900171: && 16 > __builtin_object_size (__s, 2 > 1)) 900171: return __wctomb_chk (__s, __wchar, __builtin_object_size (__s, 2 > 1)); 900171: return __wctomb_alias (__s, __wchar); 900171: } 900171: 900171: 900171: extern size_t __mbstowcs_chk (wchar_t *__restrict __dst, 900171: const char *__restrict __src, 900171: size_t __len, size_t __dstlen) noexcept (true) 900171: __attribute__ ((__access__ (__write_only__, 1, 3))) __attribute__ ((__access__ (__read_only__, 2))); 900171: extern size_t __mbstowcs_nulldst (wchar_t *__restrict __dst, const char *__restrict __src, size_t __len) noexcept (true) __asm__ ("" "mbstowcs") 900171: 900171: 900171: 900171: __attribute__ ((__access__ (__read_only__, 2))); 900171: extern size_t __mbstowcs_alias (wchar_t *__restrict __dst, const char *__restrict __src, size_t __len) noexcept (true) __asm__ ("" "mbstowcs") 900171: 900171: 900171: 900171: __attribute__ ((__access__ (__write_only__, 1, 3))) __attribute__ ((__access__ (__read_only__, 2))); 900171: extern size_t __mbstowcs_chk_warn (wchar_t *__restrict __dst, const char *__restrict __src, size_t __len, size_t __dstlen) noexcept (true) __asm__ ("" "__mbstowcs_chk") 900171: 900171: 900171: 900171: __attribute__((__warning__ ("mbstowcs called with dst buffer smaller than len " "* sizeof (wchar_t)"))) 900171: ; 900171: 900171: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) size_t 900171: __attribute__ ((__leaf__)) mbstowcs (wchar_t *__restrict __dst, const char *__restrict __src, size_t __len) noexcept (true) 900171: 900171: { 900171: if (__builtin_constant_p (__dst == __null) && __dst == __null) 900171: return __mbstowcs_nulldst (__dst, __src, __len); 900171: else 900171: return (((__builtin_constant_p (__builtin_object_size (__dst, 2 > 1)) && (__builtin_object_size (__dst, 2 > 1)) == (long unsigned int) -1) || (((__typeof (__len)) 0 < (__typeof (__len)) -1 || (__builtin_constant_p (__len) && (__len) > 0)) && __builtin_constant_p ((((long unsigned int) (__len)) <= ((__builtin_object_size (__dst, 2 > 1))) / ((sizeof (wchar_t))))) && (((long unsigned int) (__len)) <= ((__builtin_object_size (__dst, 2 > 1))) / ((sizeof (wchar_t)))))) ? __mbstowcs_alias (__dst, __src, __len) : ((((__typeof (__len)) 0 < (__typeof (__len)) -1 || (__builtin_constant_p (__len) && (__len) > 0)) && __builtin_constant_p ((((long unsigned int) (__len)) <= (__builtin_object_size (__dst, 2 > 1)) / (sizeof (wchar_t)))) && !(((long unsigned int) (__len)) <= (__builtin_object_size (__dst, 2 > 1)) / (sizeof (wchar_t)))) ? __mbstowcs_chk_warn (__dst, __src, __len, (__builtin_object_size (__dst, 2 > 1)) / (sizeof (wchar_t))) : __mbstowcs_chk (__dst, __src, __len, (__builtin_object_size (__dst, 2 > 1)) / (sizeof (wchar_t))))) 900171: ; 900171: } 900171: 900171: extern size_t __wcstombs_chk (char *__restrict __dst, 900171: const wchar_t *__restrict __src, 900171: size_t __len, size_t __dstlen) noexcept (true) 900171: __attribute__ ((__access__ (__write_only__, 1, 3))) __attribute__ ((__access__ (__read_only__, 2))); 900171: extern size_t __wcstombs_alias (char *__restrict __dst, const wchar_t *__restrict __src, size_t __len) noexcept (true) __asm__ ("" "wcstombs") 900171: 900171: 900171: 900171: __attribute__ ((__access__ (__write_only__, 1, 3))) __attribute__ ((__access__ (__read_only__, 2))); 900171: extern size_t __wcstombs_chk_warn (char *__restrict __dst, const wchar_t *__restrict __src, size_t __len, size_t __dstlen) noexcept (true) __asm__ ("" "__wcstombs_chk") 900171: 900171: 900171: 900171: __attribute__((__warning__ ("wcstombs called with dst buffer smaller than len"))); 900171: 900171: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) size_t 900171: __attribute__ ((__leaf__)) wcstombs (char *__restrict __dst, const wchar_t *__restrict __src, size_t __len) noexcept (true) 900171: 900171: { 900171: return (((__builtin_constant_p (__builtin_object_size (__dst, 2 > 1)) && (__builtin_object_size (__dst, 2 > 1)) == (long unsigned int) -1) || (((__typeof (__len)) 0 < (__typeof (__len)) -1 || (__builtin_constant_p (__len) && (__len) > 0)) && __builtin_constant_p ((((long unsigned int) (__len)) <= ((__builtin_object_size (__dst, 2 > 1))) / ((sizeof (char))))) && (((long unsigned int) (__len)) <= ((__builtin_object_size (__dst, 2 > 1))) / ((sizeof (char)))))) ? __wcstombs_alias (__dst, __src, __len) : ((((__typeof (__len)) 0 < (__typeof (__len)) -1 || (__builtin_constant_p (__len) && (__len) > 0)) && __builtin_constant_p ((((long unsigned int) (__len)) <= (__builtin_object_size (__dst, 2 > 1)) / (sizeof (char)))) && !(((long unsigned int) (__len)) <= (__builtin_object_size (__dst, 2 > 1)) / (sizeof (char)))) ? __wcstombs_chk_warn (__dst, __src, __len, __builtin_object_size (__dst, 2 > 1)) : __wcstombs_chk (__dst, __src, __len, __builtin_object_size (__dst, 2 > 1)))) 900171: 900171: ; 900171: } 900171: # 1041 "/usr/aarch64-linux-gnu/include/stdlib.h" 2 3 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: } 900171: # 39 "/usr/aarch64-linux-gnu/include/c++/12/bits/std_abs.h" 2 3 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern "C++" 900171: { 900171: namespace std __attribute__ ((__visibility__ ("default"))) 900171: { 900171: 900171: 900171: using ::abs; 900171: 900171: 900171: inline long 900171: abs(long __i) { return __builtin_labs(__i); } 900171: 900171: 900171: 900171: inline long long 900171: abs(long long __x) { return __builtin_llabs (__x); } 900171: # 70 "/usr/aarch64-linux-gnu/include/c++/12/bits/std_abs.h" 3 900171: inline constexpr double 900171: abs(double __x) 900171: { return __builtin_fabs(__x); } 900171: 900171: inline constexpr float 900171: abs(float __x) 900171: { return __builtin_fabsf(__x); } 900171: 900171: inline constexpr long double 900171: abs(long double __x) 900171: { return __builtin_fabsl(__x); } 900171: # 107 "/usr/aarch64-linux-gnu/include/c++/12/bits/std_abs.h" 3 900171: 900171: } 900171: } 900171: # 48 "/usr/aarch64-linux-gnu/include/c++/12/cmath" 2 3 900171: # 77 "/usr/aarch64-linux-gnu/include/c++/12/cmath" 3 900171: extern "C++" 900171: { 900171: namespace std __attribute__ ((__visibility__ ("default"))) 900171: { 900171: 900171: 900171: using ::acos; 900171: 900171: 900171: inline constexpr float 900171: acos(float __x) 900171: { return __builtin_acosf(__x); } 900171: 900171: inline constexpr long double 900171: acos(long double __x) 900171: { return __builtin_acosl(__x); } 900171: 900171: 900171: template 900171: inline constexpr 900171: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 900171: double>::__type 900171: acos(_Tp __x) 900171: { return __builtin_acos(__x); } 900171: 900171: using ::asin; 900171: 900171: 900171: inline constexpr float 900171: asin(float __x) 900171: { return __builtin_asinf(__x); } 900171: 900171: inline constexpr long double 900171: asin(long double __x) 900171: { return __builtin_asinl(__x); } 900171: 900171: 900171: template 900171: inline constexpr 900171: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 900171: double>::__type 900171: asin(_Tp __x) 900171: { return __builtin_asin(__x); } 900171: 900171: using ::atan; 900171: 900171: 900171: inline constexpr float 900171: atan(float __x) 900171: { return __builtin_atanf(__x); } 900171: 900171: inline constexpr long double 900171: atan(long double __x) 900171: { return __builtin_atanl(__x); } 900171: 900171: 900171: template 900171: inline constexpr 900171: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 900171: double>::__type 900171: atan(_Tp __x) 900171: { return __builtin_atan(__x); } 900171: 900171: using ::atan2; 900171: 900171: 900171: inline constexpr float 900171: atan2(float __y, float __x) 900171: { return __builtin_atan2f(__y, __x); } 900171: 900171: inline constexpr long double 900171: atan2(long double __y, long double __x) 900171: { return __builtin_atan2l(__y, __x); } 900171: 900171: 900171: template 900171: inline constexpr 900171: typename __gnu_cxx::__promote_2<_Tp, _Up>::__type 900171: atan2(_Tp __y, _Up __x) 900171: { 900171: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; 900171: return atan2(__type(__y), __type(__x)); 900171: } 900171: 900171: using ::ceil; 900171: 900171: 900171: inline constexpr float 900171: ceil(float __x) 900171: { return __builtin_ceilf(__x); } 900171: 900171: inline constexpr long double 900171: ceil(long double __x) 900171: { return __builtin_ceill(__x); } 900171: 900171: 900171: template 900171: inline constexpr 900171: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 900171: double>::__type 900171: ceil(_Tp __x) 900171: { return __builtin_ceil(__x); } 900171: 900171: using ::cos; 900171: 900171: 900171: inline constexpr float 900171: cos(float __x) 900171: { return __builtin_cosf(__x); } 900171: 900171: inline constexpr long double 900171: cos(long double __x) 900171: { return __builtin_cosl(__x); } 900171: 900171: 900171: template 900171: inline constexpr 900171: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 900171: double>::__type 900171: cos(_Tp __x) 900171: { return __builtin_cos(__x); } 900171: 900171: using ::cosh; 900171: 900171: 900171: inline constexpr float 900171: cosh(float __x) 900171: { return __builtin_coshf(__x); } 900171: 900171: inline constexpr long double 900171: cosh(long double __x) 900171: { return __builtin_coshl(__x); } 900171: 900171: 900171: template 900171: inline constexpr 900171: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 900171: double>::__type 900171: cosh(_Tp __x) 900171: { return __builtin_cosh(__x); } 900171: 900171: using ::exp; 900171: 900171: 900171: inline constexpr float 900171: exp(float __x) 900171: { return __builtin_expf(__x); } 900171: 900171: inline constexpr long double 900171: exp(long double __x) 900171: { return __builtin_expl(__x); } 900171: 900171: 900171: template 900171: inline constexpr 900171: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 900171: double>::__type 900171: exp(_Tp __x) 900171: { return __builtin_exp(__x); } 900171: 900171: using ::fabs; 900171: 900171: 900171: inline constexpr float 900171: fabs(float __x) 900171: { return __builtin_fabsf(__x); } 900171: 900171: inline constexpr long double 900171: fabs(long double __x) 900171: { return __builtin_fabsl(__x); } 900171: 900171: 900171: template 900171: inline constexpr 900171: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 900171: double>::__type 900171: fabs(_Tp __x) 900171: { return __builtin_fabs(__x); } 900171: 900171: using ::floor; 900171: 900171: 900171: inline constexpr float 900171: floor(float __x) 900171: { return __builtin_floorf(__x); } 900171: 900171: inline constexpr long double 900171: floor(long double __x) 900171: { return __builtin_floorl(__x); } 900171: 900171: 900171: template 900171: inline constexpr 900171: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 900171: double>::__type 900171: floor(_Tp __x) 900171: { return __builtin_floor(__x); } 900171: 900171: using ::fmod; 900171: 900171: 900171: inline constexpr float 900171: fmod(float __x, float __y) 900171: { return __builtin_fmodf(__x, __y); } 900171: 900171: inline constexpr long double 900171: fmod(long double __x, long double __y) 900171: { return __builtin_fmodl(__x, __y); } 900171: 900171: 900171: template 900171: inline constexpr 900171: typename __gnu_cxx::__promote_2<_Tp, _Up>::__type 900171: fmod(_Tp __x, _Up __y) 900171: { 900171: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; 900171: return fmod(__type(__x), __type(__y)); 900171: } 900171: 900171: using ::frexp; 900171: 900171: 900171: inline float 900171: frexp(float __x, int* __exp) 900171: { return __builtin_frexpf(__x, __exp); } 900171: 900171: inline long double 900171: frexp(long double __x, int* __exp) 900171: { return __builtin_frexpl(__x, __exp); } 900171: 900171: 900171: template 900171: inline constexpr 900171: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 900171: double>::__type 900171: frexp(_Tp __x, int* __exp) 900171: { return __builtin_frexp(__x, __exp); } 900171: 900171: using ::ldexp; 900171: 900171: 900171: inline constexpr float 900171: ldexp(float __x, int __exp) 900171: { return __builtin_ldexpf(__x, __exp); } 900171: 900171: inline constexpr long double 900171: ldexp(long double __x, int __exp) 900171: { return __builtin_ldexpl(__x, __exp); } 900171: 900171: 900171: template 900171: inline constexpr 900171: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 900171: double>::__type 900171: ldexp(_Tp __x, int __exp) 900171: { return __builtin_ldexp(__x, __exp); } 900171: 900171: using ::log; 900171: 900171: 900171: inline constexpr float 900171: log(float __x) 900171: { return __builtin_logf(__x); } 900171: 900171: inline constexpr long double 900171: log(long double __x) 900171: { return __builtin_logl(__x); } 900171: 900171: 900171: template 900171: inline constexpr 900171: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 900171: double>::__type 900171: log(_Tp __x) 900171: { return __builtin_log(__x); } 900171: 900171: using ::log10; 900171: 900171: 900171: inline constexpr float 900171: log10(float __x) 900171: { return __builtin_log10f(__x); } 900171: 900171: inline constexpr long double 900171: log10(long double __x) 900171: { return __builtin_log10l(__x); } 900171: 900171: 900171: template 900171: inline constexpr 900171: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 900171: double>::__type 900171: log10(_Tp __x) 900171: { return __builtin_log10(__x); } 900171: 900171: using ::modf; 900171: 900171: 900171: inline float 900171: modf(float __x, float* __iptr) 900171: { return __builtin_modff(__x, __iptr); } 900171: 900171: inline long double 900171: modf(long double __x, long double* __iptr) 900171: { return __builtin_modfl(__x, __iptr); } 900171: 900171: 900171: using ::pow; 900171: 900171: 900171: inline constexpr float 900171: pow(float __x, float __y) 900171: { return __builtin_powf(__x, __y); } 900171: 900171: inline constexpr long double 900171: pow(long double __x, long double __y) 900171: { return __builtin_powl(__x, __y); } 900171: # 412 "/usr/aarch64-linux-gnu/include/c++/12/cmath" 3 900171: template 900171: inline constexpr 900171: typename __gnu_cxx::__promote_2<_Tp, _Up>::__type 900171: pow(_Tp __x, _Up __y) 900171: { 900171: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; 900171: return pow(__type(__x), __type(__y)); 900171: } 900171: 900171: using ::sin; 900171: 900171: 900171: inline constexpr float 900171: sin(float __x) 900171: { return __builtin_sinf(__x); } 900171: 900171: inline constexpr long double 900171: sin(long double __x) 900171: { return __builtin_sinl(__x); } 900171: 900171: 900171: template 900171: inline constexpr 900171: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 900171: double>::__type 900171: sin(_Tp __x) 900171: { return __builtin_sin(__x); } 900171: 900171: using ::sinh; 900171: 900171: 900171: inline constexpr float 900171: sinh(float __x) 900171: { return __builtin_sinhf(__x); } 900171: 900171: inline constexpr long double 900171: sinh(long double __x) 900171: { return __builtin_sinhl(__x); } 900171: 900171: 900171: template 900171: inline constexpr 900171: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 900171: double>::__type 900171: sinh(_Tp __x) 900171: { return __builtin_sinh(__x); } 900171: 900171: using ::sqrt; 900171: 900171: 900171: inline constexpr float 900171: sqrt(float __x) 900171: { return __builtin_sqrtf(__x); } 900171: 900171: inline constexpr long double 900171: sqrt(long double __x) 900171: { return __builtin_sqrtl(__x); } 900171: 900171: 900171: template 900171: inline constexpr 900171: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 900171: double>::__type 900171: sqrt(_Tp __x) 900171: { return __builtin_sqrt(__x); } 900171: 900171: using ::tan; 900171: 900171: 900171: inline constexpr float 900171: tan(float __x) 900171: { return __builtin_tanf(__x); } 900171: 900171: inline constexpr long double 900171: tan(long double __x) 900171: { return __builtin_tanl(__x); } 900171: 900171: 900171: template 900171: inline constexpr 900171: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 900171: double>::__type 900171: tan(_Tp __x) 900171: { return __builtin_tan(__x); } 900171: 900171: using ::tanh; 900171: 900171: 900171: inline constexpr float 900171: tanh(float __x) 900171: { return __builtin_tanhf(__x); } 900171: 900171: inline constexpr long double 900171: tanh(long double __x) 900171: { return __builtin_tanhl(__x); } 900171: 900171: 900171: template 900171: inline constexpr 900171: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 900171: double>::__type 900171: tanh(_Tp __x) 900171: { return __builtin_tanh(__x); } 900171: # 536 "/usr/aarch64-linux-gnu/include/c++/12/cmath" 3 900171: constexpr int 900171: fpclassify(float __x) 900171: { return __builtin_fpclassify(0, 1, 4, 900171: 3, 2, __x); } 900171: 900171: constexpr int 900171: fpclassify(double __x) 900171: { return __builtin_fpclassify(0, 1, 4, 900171: 3, 2, __x); } 900171: 900171: constexpr int 900171: fpclassify(long double __x) 900171: { return __builtin_fpclassify(0, 1, 4, 900171: 3, 2, __x); } 900171: 900171: 900171: 900171: template 900171: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 900171: int>::__type 900171: fpclassify(_Tp __x) 900171: { return __x != 0 ? 4 : 2; } 900171: 900171: 900171: 900171: constexpr bool 900171: isfinite(float __x) 900171: { return __builtin_isfinite(__x); } 900171: 900171: constexpr bool 900171: isfinite(double __x) 900171: { return __builtin_isfinite(__x); } 900171: 900171: constexpr bool 900171: isfinite(long double __x) 900171: { return __builtin_isfinite(__x); } 900171: 900171: 900171: 900171: template 900171: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 900171: bool>::__type 900171: isfinite(_Tp __x) 900171: { return true; } 900171: 900171: 900171: 900171: constexpr bool 900171: isinf(float __x) 900171: { return __builtin_isinf(__x); } 900171: 900171: 900171: 900171: 900171: 900171: constexpr bool 900171: isinf(double __x) 900171: { return __builtin_isinf(__x); } 900171: 900171: 900171: constexpr bool 900171: isinf(long double __x) 900171: { return __builtin_isinf(__x); } 900171: 900171: 900171: 900171: template 900171: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 900171: bool>::__type 900171: isinf(_Tp __x) 900171: { return false; } 900171: 900171: 900171: 900171: constexpr bool 900171: isnan(float __x) 900171: { return __builtin_isnan(__x); } 900171: 900171: 900171: 900171: 900171: 900171: constexpr bool 900171: isnan(double __x) 900171: { return __builtin_isnan(__x); } 900171: 900171: 900171: constexpr bool 900171: isnan(long double __x) 900171: { return __builtin_isnan(__x); } 900171: 900171: 900171: 900171: template 900171: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 900171: bool>::__type 900171: isnan(_Tp __x) 900171: { return false; } 900171: 900171: 900171: 900171: constexpr bool 900171: isnormal(float __x) 900171: { return __builtin_isnormal(__x); } 900171: 900171: constexpr bool 900171: isnormal(double __x) 900171: { return __builtin_isnormal(__x); } 900171: 900171: constexpr bool 900171: isnormal(long double __x) 900171: { return __builtin_isnormal(__x); } 900171: 900171: 900171: 900171: template 900171: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 900171: bool>::__type 900171: isnormal(_Tp __x) 900171: { return __x != 0 ? true : false; } 900171: 900171: 900171: 900171: 900171: constexpr bool 900171: signbit(float __x) 900171: { return __builtin_signbit(__x); } 900171: 900171: constexpr bool 900171: signbit(double __x) 900171: { return __builtin_signbit(__x); } 900171: 900171: constexpr bool 900171: signbit(long double __x) 900171: { return __builtin_signbit(__x); } 900171: 900171: 900171: 900171: template 900171: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 900171: bool>::__type 900171: signbit(_Tp __x) 900171: { return __x < 0 ? true : false; } 900171: 900171: 900171: 900171: constexpr bool 900171: isgreater(float __x, float __y) 900171: { return __builtin_isgreater(__x, __y); } 900171: 900171: constexpr bool 900171: isgreater(double __x, double __y) 900171: { return __builtin_isgreater(__x, __y); } 900171: 900171: constexpr bool 900171: isgreater(long double __x, long double __y) 900171: { return __builtin_isgreater(__x, __y); } 900171: 900171: 900171: 900171: template 900171: constexpr typename 900171: __gnu_cxx::__enable_if<(__is_arithmetic<_Tp>::__value 900171: && __is_arithmetic<_Up>::__value), bool>::__type 900171: isgreater(_Tp __x, _Up __y) 900171: { 900171: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; 900171: return __builtin_isgreater(__type(__x), __type(__y)); 900171: } 900171: 900171: 900171: 900171: constexpr bool 900171: isgreaterequal(float __x, float __y) 900171: { return __builtin_isgreaterequal(__x, __y); } 900171: 900171: constexpr bool 900171: isgreaterequal(double __x, double __y) 900171: { return __builtin_isgreaterequal(__x, __y); } 900171: 900171: constexpr bool 900171: isgreaterequal(long double __x, long double __y) 900171: { return __builtin_isgreaterequal(__x, __y); } 900171: 900171: 900171: 900171: template 900171: constexpr typename 900171: __gnu_cxx::__enable_if<(__is_arithmetic<_Tp>::__value 900171: && __is_arithmetic<_Up>::__value), bool>::__type 900171: isgreaterequal(_Tp __x, _Up __y) 900171: { 900171: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; 900171: return __builtin_isgreaterequal(__type(__x), __type(__y)); 900171: } 900171: 900171: 900171: 900171: constexpr bool 900171: isless(float __x, float __y) 900171: { return __builtin_isless(__x, __y); } 900171: 900171: constexpr bool 900171: isless(double __x, double __y) 900171: { return __builtin_isless(__x, __y); } 900171: 900171: constexpr bool 900171: isless(long double __x, long double __y) 900171: { return __builtin_isless(__x, __y); } 900171: 900171: 900171: 900171: template 900171: constexpr typename 900171: __gnu_cxx::__enable_if<(__is_arithmetic<_Tp>::__value 900171: && __is_arithmetic<_Up>::__value), bool>::__type 900171: isless(_Tp __x, _Up __y) 900171: { 900171: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; 900171: return __builtin_isless(__type(__x), __type(__y)); 900171: } 900171: 900171: 900171: 900171: constexpr bool 900171: islessequal(float __x, float __y) 900171: { return __builtin_islessequal(__x, __y); } 900171: 900171: constexpr bool 900171: islessequal(double __x, double __y) 900171: { return __builtin_islessequal(__x, __y); } 900171: 900171: constexpr bool 900171: islessequal(long double __x, long double __y) 900171: { return __builtin_islessequal(__x, __y); } 900171: 900171: 900171: 900171: template 900171: constexpr typename 900171: __gnu_cxx::__enable_if<(__is_arithmetic<_Tp>::__value 900171: && __is_arithmetic<_Up>::__value), bool>::__type 900171: islessequal(_Tp __x, _Up __y) 900171: { 900171: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; 900171: return __builtin_islessequal(__type(__x), __type(__y)); 900171: } 900171: 900171: 900171: 900171: constexpr bool 900171: islessgreater(float __x, float __y) 900171: { return __builtin_islessgreater(__x, __y); } 900171: 900171: constexpr bool 900171: islessgreater(double __x, double __y) 900171: { return __builtin_islessgreater(__x, __y); } 900171: 900171: constexpr bool 900171: islessgreater(long double __x, long double __y) 900171: { return __builtin_islessgreater(__x, __y); } 900171: 900171: 900171: 900171: template 900171: constexpr typename 900171: __gnu_cxx::__enable_if<(__is_arithmetic<_Tp>::__value 900171: && __is_arithmetic<_Up>::__value), bool>::__type 900171: islessgreater(_Tp __x, _Up __y) 900171: { 900171: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; 900171: return __builtin_islessgreater(__type(__x), __type(__y)); 900171: } 900171: 900171: 900171: 900171: constexpr bool 900171: isunordered(float __x, float __y) 900171: { return __builtin_isunordered(__x, __y); } 900171: 900171: constexpr bool 900171: isunordered(double __x, double __y) 900171: { return __builtin_isunordered(__x, __y); } 900171: 900171: constexpr bool 900171: isunordered(long double __x, long double __y) 900171: { return __builtin_isunordered(__x, __y); } 900171: 900171: 900171: 900171: template 900171: constexpr typename 900171: __gnu_cxx::__enable_if<(__is_arithmetic<_Tp>::__value 900171: && __is_arithmetic<_Up>::__value), bool>::__type 900171: isunordered(_Tp __x, _Up __y) 900171: { 900171: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; 900171: return __builtin_isunordered(__type(__x), __type(__y)); 900171: } 900171: # 1065 "/usr/aarch64-linux-gnu/include/c++/12/cmath" 3 900171: using ::double_t; 900171: using ::float_t; 900171: 900171: 900171: using ::acosh; 900171: using ::acoshf; 900171: using ::acoshl; 900171: 900171: using ::asinh; 900171: using ::asinhf; 900171: using ::asinhl; 900171: 900171: using ::atanh; 900171: using ::atanhf; 900171: using ::atanhl; 900171: 900171: using ::cbrt; 900171: using ::cbrtf; 900171: using ::cbrtl; 900171: 900171: using ::copysign; 900171: using ::copysignf; 900171: using ::copysignl; 900171: 900171: using ::erf; 900171: using ::erff; 900171: using ::erfl; 900171: 900171: using ::erfc; 900171: using ::erfcf; 900171: using ::erfcl; 900171: 900171: using ::exp2; 900171: using ::exp2f; 900171: using ::exp2l; 900171: 900171: using ::expm1; 900171: using ::expm1f; 900171: using ::expm1l; 900171: 900171: using ::fdim; 900171: using ::fdimf; 900171: using ::fdiml; 900171: 900171: using ::fma; 900171: using ::fmaf; 900171: using ::fmal; 900171: 900171: using ::fmax; 900171: using ::fmaxf; 900171: using ::fmaxl; 900171: 900171: using ::fmin; 900171: using ::fminf; 900171: using ::fminl; 900171: 900171: using ::hypot; 900171: using ::hypotf; 900171: using ::hypotl; 900171: 900171: using ::ilogb; 900171: using ::ilogbf; 900171: using ::ilogbl; 900171: 900171: using ::lgamma; 900171: using ::lgammaf; 900171: using ::lgammal; 900171: 900171: 900171: using ::llrint; 900171: using ::llrintf; 900171: using ::llrintl; 900171: 900171: using ::llround; 900171: using ::llroundf; 900171: using ::llroundl; 900171: 900171: 900171: using ::log1p; 900171: using ::log1pf; 900171: using ::log1pl; 900171: 900171: using ::log2; 900171: using ::log2f; 900171: using ::log2l; 900171: 900171: using ::logb; 900171: using ::logbf; 900171: using ::logbl; 900171: 900171: using ::lrint; 900171: using ::lrintf; 900171: using ::lrintl; 900171: 900171: using ::lround; 900171: using ::lroundf; 900171: using ::lroundl; 900171: 900171: using ::nan; 900171: using ::nanf; 900171: using ::nanl; 900171: 900171: using ::nearbyint; 900171: using ::nearbyintf; 900171: using ::nearbyintl; 900171: 900171: using ::nextafter; 900171: using ::nextafterf; 900171: using ::nextafterl; 900171: 900171: using ::nexttoward; 900171: using ::nexttowardf; 900171: using ::nexttowardl; 900171: 900171: using ::remainder; 900171: using ::remainderf; 900171: using ::remainderl; 900171: 900171: using ::remquo; 900171: using ::remquof; 900171: using ::remquol; 900171: 900171: using ::rint; 900171: using ::rintf; 900171: using ::rintl; 900171: 900171: using ::round; 900171: using ::roundf; 900171: using ::roundl; 900171: 900171: using ::scalbln; 900171: using ::scalblnf; 900171: using ::scalblnl; 900171: 900171: using ::scalbn; 900171: using ::scalbnf; 900171: using ::scalbnl; 900171: 900171: using ::tgamma; 900171: using ::tgammaf; 900171: using ::tgammal; 900171: 900171: using ::trunc; 900171: using ::truncf; 900171: using ::truncl; 900171: 900171: 900171: 900171: constexpr float 900171: acosh(float __x) 900171: { return __builtin_acoshf(__x); } 900171: 900171: constexpr long double 900171: acosh(long double __x) 900171: { return __builtin_acoshl(__x); } 900171: 900171: 900171: 900171: template 900171: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 900171: double>::__type 900171: acosh(_Tp __x) 900171: { return __builtin_acosh(__x); } 900171: 900171: 900171: 900171: constexpr float 900171: asinh(float __x) 900171: { return __builtin_asinhf(__x); } 900171: 900171: constexpr long double 900171: asinh(long double __x) 900171: { return __builtin_asinhl(__x); } 900171: 900171: 900171: 900171: template 900171: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 900171: double>::__type 900171: asinh(_Tp __x) 900171: { return __builtin_asinh(__x); } 900171: 900171: 900171: 900171: constexpr float 900171: atanh(float __x) 900171: { return __builtin_atanhf(__x); } 900171: 900171: constexpr long double 900171: atanh(long double __x) 900171: { return __builtin_atanhl(__x); } 900171: 900171: 900171: 900171: template 900171: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 900171: double>::__type 900171: atanh(_Tp __x) 900171: { return __builtin_atanh(__x); } 900171: 900171: 900171: 900171: constexpr float 900171: cbrt(float __x) 900171: { return __builtin_cbrtf(__x); } 900171: 900171: constexpr long double 900171: cbrt(long double __x) 900171: { return __builtin_cbrtl(__x); } 900171: 900171: 900171: 900171: template 900171: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 900171: double>::__type 900171: cbrt(_Tp __x) 900171: { return __builtin_cbrt(__x); } 900171: 900171: 900171: 900171: constexpr float 900171: copysign(float __x, float __y) 900171: { return __builtin_copysignf(__x, __y); } 900171: 900171: constexpr long double 900171: copysign(long double __x, long double __y) 900171: { return __builtin_copysignl(__x, __y); } 900171: 900171: 900171: 900171: template 900171: constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type 900171: copysign(_Tp __x, _Up __y) 900171: { 900171: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; 900171: return copysign(__type(__x), __type(__y)); 900171: } 900171: 900171: 900171: 900171: constexpr float 900171: erf(float __x) 900171: { return __builtin_erff(__x); } 900171: 900171: constexpr long double 900171: erf(long double __x) 900171: { return __builtin_erfl(__x); } 900171: 900171: 900171: 900171: template 900171: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 900171: double>::__type 900171: erf(_Tp __x) 900171: { return __builtin_erf(__x); } 900171: 900171: 900171: 900171: constexpr float 900171: erfc(float __x) 900171: { return __builtin_erfcf(__x); } 900171: 900171: constexpr long double 900171: erfc(long double __x) 900171: { return __builtin_erfcl(__x); } 900171: 900171: 900171: 900171: template 900171: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 900171: double>::__type 900171: erfc(_Tp __x) 900171: { return __builtin_erfc(__x); } 900171: 900171: 900171: 900171: constexpr float 900171: exp2(float __x) 900171: { return __builtin_exp2f(__x); } 900171: 900171: constexpr long double 900171: exp2(long double __x) 900171: { return __builtin_exp2l(__x); } 900171: 900171: 900171: 900171: template 900171: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 900171: double>::__type 900171: exp2(_Tp __x) 900171: { return __builtin_exp2(__x); } 900171: 900171: 900171: 900171: constexpr float 900171: expm1(float __x) 900171: { return __builtin_expm1f(__x); } 900171: 900171: constexpr long double 900171: expm1(long double __x) 900171: { return __builtin_expm1l(__x); } 900171: 900171: 900171: 900171: template 900171: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 900171: double>::__type 900171: expm1(_Tp __x) 900171: { return __builtin_expm1(__x); } 900171: 900171: 900171: 900171: constexpr float 900171: fdim(float __x, float __y) 900171: { return __builtin_fdimf(__x, __y); } 900171: 900171: constexpr long double 900171: fdim(long double __x, long double __y) 900171: { return __builtin_fdiml(__x, __y); } 900171: 900171: 900171: 900171: template 900171: constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type 900171: fdim(_Tp __x, _Up __y) 900171: { 900171: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; 900171: return fdim(__type(__x), __type(__y)); 900171: } 900171: 900171: 900171: 900171: constexpr float 900171: fma(float __x, float __y, float __z) 900171: { return __builtin_fmaf(__x, __y, __z); } 900171: 900171: constexpr long double 900171: fma(long double __x, long double __y, long double __z) 900171: { return __builtin_fmal(__x, __y, __z); } 900171: 900171: 900171: 900171: template 900171: constexpr typename __gnu_cxx::__promote_3<_Tp, _Up, _Vp>::__type 900171: fma(_Tp __x, _Up __y, _Vp __z) 900171: { 900171: typedef typename __gnu_cxx::__promote_3<_Tp, _Up, _Vp>::__type __type; 900171: return fma(__type(__x), __type(__y), __type(__z)); 900171: } 900171: 900171: 900171: 900171: constexpr float 900171: fmax(float __x, float __y) 900171: { return __builtin_fmaxf(__x, __y); } 900171: 900171: constexpr long double 900171: fmax(long double __x, long double __y) 900171: { return __builtin_fmaxl(__x, __y); } 900171: 900171: 900171: 900171: template 900171: constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type 900171: fmax(_Tp __x, _Up __y) 900171: { 900171: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; 900171: return fmax(__type(__x), __type(__y)); 900171: } 900171: 900171: 900171: 900171: constexpr float 900171: fmin(float __x, float __y) 900171: { return __builtin_fminf(__x, __y); } 900171: 900171: constexpr long double 900171: fmin(long double __x, long double __y) 900171: { return __builtin_fminl(__x, __y); } 900171: 900171: 900171: 900171: template 900171: constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type 900171: fmin(_Tp __x, _Up __y) 900171: { 900171: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; 900171: return fmin(__type(__x), __type(__y)); 900171: } 900171: 900171: 900171: 900171: constexpr float 900171: hypot(float __x, float __y) 900171: { return __builtin_hypotf(__x, __y); } 900171: 900171: constexpr long double 900171: hypot(long double __x, long double __y) 900171: { return __builtin_hypotl(__x, __y); } 900171: 900171: 900171: 900171: template 900171: constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type 900171: hypot(_Tp __x, _Up __y) 900171: { 900171: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; 900171: return hypot(__type(__x), __type(__y)); 900171: } 900171: 900171: 900171: 900171: constexpr int 900171: ilogb(float __x) 900171: { return __builtin_ilogbf(__x); } 900171: 900171: constexpr int 900171: ilogb(long double __x) 900171: { return __builtin_ilogbl(__x); } 900171: 900171: 900171: 900171: template 900171: constexpr 900171: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 900171: int>::__type 900171: ilogb(_Tp __x) 900171: { return __builtin_ilogb(__x); } 900171: 900171: 900171: 900171: constexpr float 900171: lgamma(float __x) 900171: { return __builtin_lgammaf(__x); } 900171: 900171: constexpr long double 900171: lgamma(long double __x) 900171: { return __builtin_lgammal(__x); } 900171: 900171: 900171: 900171: template 900171: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 900171: double>::__type 900171: lgamma(_Tp __x) 900171: { return __builtin_lgamma(__x); } 900171: 900171: 900171: 900171: constexpr long long 900171: llrint(float __x) 900171: { return __builtin_llrintf(__x); } 900171: 900171: constexpr long long 900171: llrint(long double __x) 900171: { return __builtin_llrintl(__x); } 900171: 900171: 900171: 900171: template 900171: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 900171: long long>::__type 900171: llrint(_Tp __x) 900171: { return __builtin_llrint(__x); } 900171: 900171: 900171: 900171: constexpr long long 900171: llround(float __x) 900171: { return __builtin_llroundf(__x); } 900171: 900171: constexpr long long 900171: llround(long double __x) 900171: { return __builtin_llroundl(__x); } 900171: 900171: 900171: 900171: template 900171: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 900171: long long>::__type 900171: llround(_Tp __x) 900171: { return __builtin_llround(__x); } 900171: 900171: 900171: 900171: constexpr float 900171: log1p(float __x) 900171: { return __builtin_log1pf(__x); } 900171: 900171: constexpr long double 900171: log1p(long double __x) 900171: { return __builtin_log1pl(__x); } 900171: 900171: 900171: 900171: template 900171: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 900171: double>::__type 900171: log1p(_Tp __x) 900171: { return __builtin_log1p(__x); } 900171: 900171: 900171: 900171: 900171: constexpr float 900171: log2(float __x) 900171: { return __builtin_log2f(__x); } 900171: 900171: constexpr long double 900171: log2(long double __x) 900171: { return __builtin_log2l(__x); } 900171: 900171: 900171: 900171: template 900171: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 900171: double>::__type 900171: log2(_Tp __x) 900171: { return __builtin_log2(__x); } 900171: 900171: 900171: 900171: constexpr float 900171: logb(float __x) 900171: { return __builtin_logbf(__x); } 900171: 900171: constexpr long double 900171: logb(long double __x) 900171: { return __builtin_logbl(__x); } 900171: 900171: 900171: 900171: template 900171: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 900171: double>::__type 900171: logb(_Tp __x) 900171: { return __builtin_logb(__x); } 900171: 900171: 900171: 900171: constexpr long 900171: lrint(float __x) 900171: { return __builtin_lrintf(__x); } 900171: 900171: constexpr long 900171: lrint(long double __x) 900171: { return __builtin_lrintl(__x); } 900171: 900171: 900171: 900171: template 900171: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 900171: long>::__type 900171: lrint(_Tp __x) 900171: { return __builtin_lrint(__x); } 900171: 900171: 900171: 900171: constexpr long 900171: lround(float __x) 900171: { return __builtin_lroundf(__x); } 900171: 900171: constexpr long 900171: lround(long double __x) 900171: { return __builtin_lroundl(__x); } 900171: 900171: 900171: 900171: template 900171: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 900171: long>::__type 900171: lround(_Tp __x) 900171: { return __builtin_lround(__x); } 900171: 900171: 900171: 900171: constexpr float 900171: nearbyint(float __x) 900171: { return __builtin_nearbyintf(__x); } 900171: 900171: constexpr long double 900171: nearbyint(long double __x) 900171: { return __builtin_nearbyintl(__x); } 900171: 900171: 900171: 900171: template 900171: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 900171: double>::__type 900171: nearbyint(_Tp __x) 900171: { return __builtin_nearbyint(__x); } 900171: 900171: 900171: 900171: constexpr float 900171: nextafter(float __x, float __y) 900171: { return __builtin_nextafterf(__x, __y); } 900171: 900171: constexpr long double 900171: nextafter(long double __x, long double __y) 900171: { return __builtin_nextafterl(__x, __y); } 900171: 900171: 900171: 900171: template 900171: constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type 900171: nextafter(_Tp __x, _Up __y) 900171: { 900171: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; 900171: return nextafter(__type(__x), __type(__y)); 900171: } 900171: 900171: 900171: 900171: constexpr float 900171: nexttoward(float __x, long double __y) 900171: { return __builtin_nexttowardf(__x, __y); } 900171: 900171: constexpr long double 900171: nexttoward(long double __x, long double __y) 900171: { return __builtin_nexttowardl(__x, __y); } 900171: 900171: 900171: 900171: template 900171: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 900171: double>::__type 900171: nexttoward(_Tp __x, long double __y) 900171: { return __builtin_nexttoward(__x, __y); } 900171: 900171: 900171: 900171: constexpr float 900171: remainder(float __x, float __y) 900171: { return __builtin_remainderf(__x, __y); } 900171: 900171: constexpr long double 900171: remainder(long double __x, long double __y) 900171: { return __builtin_remainderl(__x, __y); } 900171: 900171: 900171: 900171: template 900171: constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type 900171: remainder(_Tp __x, _Up __y) 900171: { 900171: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; 900171: return remainder(__type(__x), __type(__y)); 900171: } 900171: 900171: 900171: 900171: inline float 900171: remquo(float __x, float __y, int* __pquo) 900171: { return __builtin_remquof(__x, __y, __pquo); } 900171: 900171: inline long double 900171: remquo(long double __x, long double __y, int* __pquo) 900171: { return __builtin_remquol(__x, __y, __pquo); } 900171: 900171: 900171: 900171: template 900171: inline typename __gnu_cxx::__promote_2<_Tp, _Up>::__type 900171: remquo(_Tp __x, _Up __y, int* __pquo) 900171: { 900171: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; 900171: return remquo(__type(__x), __type(__y), __pquo); 900171: } 900171: 900171: 900171: 900171: constexpr float 900171: rint(float __x) 900171: { return __builtin_rintf(__x); } 900171: 900171: constexpr long double 900171: rint(long double __x) 900171: { return __builtin_rintl(__x); } 900171: 900171: 900171: 900171: template 900171: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 900171: double>::__type 900171: rint(_Tp __x) 900171: { return __builtin_rint(__x); } 900171: 900171: 900171: 900171: constexpr float 900171: round(float __x) 900171: { return __builtin_roundf(__x); } 900171: 900171: constexpr long double 900171: round(long double __x) 900171: { return __builtin_roundl(__x); } 900171: 900171: 900171: 900171: template 900171: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 900171: double>::__type 900171: round(_Tp __x) 900171: { return __builtin_round(__x); } 900171: 900171: 900171: 900171: constexpr float 900171: scalbln(float __x, long __ex) 900171: { return __builtin_scalblnf(__x, __ex); } 900171: 900171: constexpr long double 900171: scalbln(long double __x, long __ex) 900171: { return __builtin_scalblnl(__x, __ex); } 900171: 900171: 900171: 900171: template 900171: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 900171: double>::__type 900171: scalbln(_Tp __x, long __ex) 900171: { return __builtin_scalbln(__x, __ex); } 900171: 900171: 900171: 900171: constexpr float 900171: scalbn(float __x, int __ex) 900171: { return __builtin_scalbnf(__x, __ex); } 900171: 900171: constexpr long double 900171: scalbn(long double __x, int __ex) 900171: { return __builtin_scalbnl(__x, __ex); } 900171: 900171: 900171: 900171: template 900171: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 900171: double>::__type 900171: scalbn(_Tp __x, int __ex) 900171: { return __builtin_scalbn(__x, __ex); } 900171: 900171: 900171: 900171: constexpr float 900171: tgamma(float __x) 900171: { return __builtin_tgammaf(__x); } 900171: 900171: constexpr long double 900171: tgamma(long double __x) 900171: { return __builtin_tgammal(__x); } 900171: 900171: 900171: 900171: template 900171: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 900171: double>::__type 900171: tgamma(_Tp __x) 900171: { return __builtin_tgamma(__x); } 900171: 900171: 900171: 900171: constexpr float 900171: trunc(float __x) 900171: { return __builtin_truncf(__x); } 900171: 900171: constexpr long double 900171: trunc(long double __x) 900171: { return __builtin_truncl(__x); } 900171: 900171: 900171: 900171: template 900171: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 900171: double>::__type 900171: trunc(_Tp __x) 900171: { return __builtin_trunc(__x); } 900171: # 1931 "/usr/aarch64-linux-gnu/include/c++/12/cmath" 3 900171: 900171: } 900171: 900171: 900171: 900171: 900171: 900171: } 900171: # 24 "third_party/butteraugli/butteraugli/butteraugli.h" 2 900171: # 1 "/usr/aarch64-linux-gnu/include/c++/12/cstdint" 1 3 900171: # 32 "/usr/aarch64-linux-gnu/include/c++/12/cstdint" 3 900171: 900171: # 33 "/usr/aarch64-linux-gnu/include/c++/12/cstdint" 3 900171: # 41 "/usr/aarch64-linux-gnu/include/c++/12/cstdint" 3 900171: # 1 "/usr/lib/gcc-cross/aarch64-linux-gnu/12/include/stdint.h" 1 3 4 900171: # 9 "/usr/lib/gcc-cross/aarch64-linux-gnu/12/include/stdint.h" 3 4 900171: # 1 "/usr/aarch64-linux-gnu/include/stdint.h" 1 3 4 900171: # 26 "/usr/aarch64-linux-gnu/include/stdint.h" 3 4 900171: # 1 "/usr/aarch64-linux-gnu/include/bits/libc-header-start.h" 1 3 4 900171: # 27 "/usr/aarch64-linux-gnu/include/stdint.h" 2 3 4 900171: 900171: # 1 "/usr/aarch64-linux-gnu/include/bits/wchar.h" 1 3 4 900171: # 29 "/usr/aarch64-linux-gnu/include/stdint.h" 2 3 4 900171: # 1 "/usr/aarch64-linux-gnu/include/bits/wordsize.h" 1 3 4 900171: # 30 "/usr/aarch64-linux-gnu/include/stdint.h" 2 3 4 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: # 1 "/usr/aarch64-linux-gnu/include/bits/stdint-uintn.h" 1 3 4 900171: # 24 "/usr/aarch64-linux-gnu/include/bits/stdint-uintn.h" 3 4 900171: typedef __uint8_t uint8_t; 900171: typedef __uint16_t uint16_t; 900171: typedef __uint32_t uint32_t; 900171: typedef __uint64_t uint64_t; 900171: # 38 "/usr/aarch64-linux-gnu/include/stdint.h" 2 3 4 900171: 900171: 900171: 900171: 900171: 900171: typedef __int_least8_t int_least8_t; 900171: typedef __int_least16_t int_least16_t; 900171: typedef __int_least32_t int_least32_t; 900171: typedef __int_least64_t int_least64_t; 900171: 900171: 900171: typedef __uint_least8_t uint_least8_t; 900171: typedef __uint_least16_t uint_least16_t; 900171: typedef __uint_least32_t uint_least32_t; 900171: typedef __uint_least64_t uint_least64_t; 900171: 900171: 900171: 900171: 900171: 900171: typedef signed char int_fast8_t; 900171: 900171: typedef long int int_fast16_t; 900171: typedef long int int_fast32_t; 900171: typedef long int int_fast64_t; 900171: # 71 "/usr/aarch64-linux-gnu/include/stdint.h" 3 4 900171: typedef unsigned char uint_fast8_t; 900171: 900171: typedef unsigned long int uint_fast16_t; 900171: typedef unsigned long int uint_fast32_t; 900171: typedef unsigned long int uint_fast64_t; 900171: # 87 "/usr/aarch64-linux-gnu/include/stdint.h" 3 4 900171: typedef long int intptr_t; 900171: 900171: 900171: typedef unsigned long int uintptr_t; 900171: # 101 "/usr/aarch64-linux-gnu/include/stdint.h" 3 4 900171: typedef __intmax_t intmax_t; 900171: typedef __uintmax_t uintmax_t; 900171: # 10 "/usr/lib/gcc-cross/aarch64-linux-gnu/12/include/stdint.h" 2 3 4 900171: # 42 "/usr/aarch64-linux-gnu/include/c++/12/cstdint" 2 3 900171: 900171: 900171: namespace std 900171: { 900171: 900171: using ::int8_t; 900171: using ::int16_t; 900171: using ::int32_t; 900171: using ::int64_t; 900171: 900171: using ::int_fast8_t; 900171: using ::int_fast16_t; 900171: using ::int_fast32_t; 900171: using ::int_fast64_t; 900171: 900171: using ::int_least8_t; 900171: using ::int_least16_t; 900171: using ::int_least32_t; 900171: using ::int_least64_t; 900171: 900171: using ::intmax_t; 900171: using ::intptr_t; 900171: 900171: using ::uint8_t; 900171: using ::uint16_t; 900171: using ::uint32_t; 900171: using ::uint64_t; 900171: 900171: using ::uint_fast8_t; 900171: using ::uint_fast16_t; 900171: using ::uint_fast32_t; 900171: using ::uint_fast64_t; 900171: 900171: using ::uint_least8_t; 900171: using ::uint_least16_t; 900171: using ::uint_least32_t; 900171: using ::uint_least64_t; 900171: 900171: using ::uintmax_t; 900171: using ::uintptr_t; 900171: 900171: 900171: 900171: 900171: 900171: } 900171: # 25 "third_party/butteraugli/butteraugli/butteraugli.h" 2 900171: # 1 "/usr/aarch64-linux-gnu/include/c++/12/cstdio" 1 3 900171: # 39 "/usr/aarch64-linux-gnu/include/c++/12/cstdio" 3 900171: 900171: # 40 "/usr/aarch64-linux-gnu/include/c++/12/cstdio" 3 900171: 900171: 900171: # 1 "/usr/aarch64-linux-gnu/include/stdio.h" 1 3 900171: # 27 "/usr/aarch64-linux-gnu/include/stdio.h" 3 900171: # 1 "/usr/aarch64-linux-gnu/include/bits/libc-header-start.h" 1 3 900171: # 28 "/usr/aarch64-linux-gnu/include/stdio.h" 2 3 900171: 900171: extern "C" { 900171: 900171: 900171: 900171: # 1 "/usr/lib/gcc-cross/aarch64-linux-gnu/12/include/stddef.h" 1 3 4 900171: # 34 "/usr/aarch64-linux-gnu/include/stdio.h" 2 3 900171: 900171: 900171: # 1 "/usr/lib/gcc-cross/aarch64-linux-gnu/12/include/stdarg.h" 1 3 4 900171: # 40 "/usr/lib/gcc-cross/aarch64-linux-gnu/12/include/stdarg.h" 3 4 900171: typedef __builtin_va_list __gnuc_va_list; 900171: # 37 "/usr/aarch64-linux-gnu/include/stdio.h" 2 3 900171: 900171: 900171: # 1 "/usr/aarch64-linux-gnu/include/bits/types/__fpos_t.h" 1 3 900171: 900171: 900171: 900171: 900171: # 1 "/usr/aarch64-linux-gnu/include/bits/types/__mbstate_t.h" 1 3 900171: # 13 "/usr/aarch64-linux-gnu/include/bits/types/__mbstate_t.h" 3 900171: typedef struct 900171: { 900171: int __count; 900171: union 900171: { 900171: unsigned int __wch; 900171: char __wchb[4]; 900171: } __value; 900171: } __mbstate_t; 900171: # 6 "/usr/aarch64-linux-gnu/include/bits/types/__fpos_t.h" 2 3 900171: 900171: 900171: 900171: 900171: typedef struct _G_fpos_t 900171: { 900171: __off_t __pos; 900171: __mbstate_t __state; 900171: } __fpos_t; 900171: # 40 "/usr/aarch64-linux-gnu/include/stdio.h" 2 3 900171: # 1 "/usr/aarch64-linux-gnu/include/bits/types/__fpos64_t.h" 1 3 900171: # 10 "/usr/aarch64-linux-gnu/include/bits/types/__fpos64_t.h" 3 900171: typedef struct _G_fpos64_t 900171: { 900171: __off64_t __pos; 900171: __mbstate_t __state; 900171: } __fpos64_t; 900171: # 41 "/usr/aarch64-linux-gnu/include/stdio.h" 2 3 900171: # 1 "/usr/aarch64-linux-gnu/include/bits/types/__FILE.h" 1 3 900171: 900171: 900171: 900171: struct _IO_FILE; 900171: typedef struct _IO_FILE __FILE; 900171: # 42 "/usr/aarch64-linux-gnu/include/stdio.h" 2 3 900171: # 1 "/usr/aarch64-linux-gnu/include/bits/types/FILE.h" 1 3 900171: 900171: 900171: 900171: struct _IO_FILE; 900171: 900171: 900171: typedef struct _IO_FILE FILE; 900171: # 43 "/usr/aarch64-linux-gnu/include/stdio.h" 2 3 900171: # 1 "/usr/aarch64-linux-gnu/include/bits/types/struct_FILE.h" 1 3 900171: # 35 "/usr/aarch64-linux-gnu/include/bits/types/struct_FILE.h" 3 900171: struct _IO_FILE; 900171: struct _IO_marker; 900171: struct _IO_codecvt; 900171: struct _IO_wide_data; 900171: 900171: 900171: 900171: 900171: typedef void _IO_lock_t; 900171: 900171: 900171: 900171: 900171: 900171: struct _IO_FILE 900171: { 900171: int _flags; 900171: 900171: 900171: char *_IO_read_ptr; 900171: char *_IO_read_end; 900171: char *_IO_read_base; 900171: char *_IO_write_base; 900171: char *_IO_write_ptr; 900171: char *_IO_write_end; 900171: char *_IO_buf_base; 900171: char *_IO_buf_end; 900171: 900171: 900171: char *_IO_save_base; 900171: char *_IO_backup_base; 900171: char *_IO_save_end; 900171: 900171: struct _IO_marker *_markers; 900171: 900171: struct _IO_FILE *_chain; 900171: 900171: int _fileno; 900171: int _flags2; 900171: __off_t _old_offset; 900171: 900171: 900171: unsigned short _cur_column; 900171: signed char _vtable_offset; 900171: char _shortbuf[1]; 900171: 900171: _IO_lock_t *_lock; 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: __off64_t _offset; 900171: 900171: struct _IO_codecvt *_codecvt; 900171: struct _IO_wide_data *_wide_data; 900171: struct _IO_FILE *_freeres_list; 900171: void *_freeres_buf; 900171: size_t __pad5; 900171: int _mode; 900171: 900171: char _unused2[15 * sizeof (int) - 4 * sizeof (void *) - sizeof (size_t)]; 900171: }; 900171: # 44 "/usr/aarch64-linux-gnu/include/stdio.h" 2 3 900171: 900171: 900171: # 1 "/usr/aarch64-linux-gnu/include/bits/types/cookie_io_functions_t.h" 1 3 900171: # 27 "/usr/aarch64-linux-gnu/include/bits/types/cookie_io_functions_t.h" 3 900171: typedef __ssize_t cookie_read_function_t (void *__cookie, char *__buf, 900171: size_t __nbytes); 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: typedef __ssize_t cookie_write_function_t (void *__cookie, const char *__buf, 900171: size_t __nbytes); 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: typedef int cookie_seek_function_t (void *__cookie, __off64_t *__pos, int __w); 900171: 900171: 900171: typedef int cookie_close_function_t (void *__cookie); 900171: 900171: 900171: 900171: 900171: 900171: 900171: typedef struct _IO_cookie_io_functions_t 900171: { 900171: cookie_read_function_t *read; 900171: cookie_write_function_t *write; 900171: cookie_seek_function_t *seek; 900171: cookie_close_function_t *close; 900171: } cookie_io_functions_t; 900171: # 47 "/usr/aarch64-linux-gnu/include/stdio.h" 2 3 900171: 900171: 900171: 900171: 900171: 900171: typedef __gnuc_va_list va_list; 900171: # 84 "/usr/aarch64-linux-gnu/include/stdio.h" 3 900171: typedef __fpos_t fpos_t; 900171: 900171: 900171: 900171: 900171: typedef __fpos64_t fpos64_t; 900171: # 133 "/usr/aarch64-linux-gnu/include/stdio.h" 3 900171: # 1 "/usr/aarch64-linux-gnu/include/bits/stdio_lim.h" 1 3 900171: # 134 "/usr/aarch64-linux-gnu/include/stdio.h" 2 3 900171: # 143 "/usr/aarch64-linux-gnu/include/stdio.h" 3 900171: extern FILE *stdin; 900171: extern FILE *stdout; 900171: extern FILE *stderr; 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern int remove (const char *__filename) noexcept (true); 900171: 900171: extern int rename (const char *__old, const char *__new) noexcept (true); 900171: 900171: 900171: 900171: extern int renameat (int __oldfd, const char *__old, int __newfd, 900171: const char *__new) noexcept (true); 900171: # 170 "/usr/aarch64-linux-gnu/include/stdio.h" 3 900171: extern int renameat2 (int __oldfd, const char *__old, int __newfd, 900171: const char *__new, unsigned int __flags) noexcept (true); 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern int fclose (FILE *__stream); 900171: # 188 "/usr/aarch64-linux-gnu/include/stdio.h" 3 900171: extern FILE *tmpfile (void) 900171: __attribute__ ((__malloc__)) __attribute__ ((__malloc__ (fclose, 1))) __attribute__ ((__warn_unused_result__)); 900171: # 200 "/usr/aarch64-linux-gnu/include/stdio.h" 3 900171: extern FILE *tmpfile64 (void) 900171: __attribute__ ((__malloc__)) __attribute__ ((__malloc__ (fclose, 1))) __attribute__ ((__warn_unused_result__)); 900171: 900171: 900171: 900171: extern char *tmpnam (char[20]) noexcept (true) __attribute__ ((__warn_unused_result__)); 900171: 900171: 900171: 900171: 900171: extern char *tmpnam_r (char __s[20]) noexcept (true) __attribute__ ((__warn_unused_result__)); 900171: # 222 "/usr/aarch64-linux-gnu/include/stdio.h" 3 900171: extern char *tempnam (const char *__dir, const char *__pfx) 900171: noexcept (true) __attribute__ ((__malloc__)) __attribute__ ((__warn_unused_result__)) __attribute__ ((__malloc__ (__builtin_free, 1))); 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern int fflush (FILE *__stream); 900171: # 239 "/usr/aarch64-linux-gnu/include/stdio.h" 3 900171: extern int fflush_unlocked (FILE *__stream); 900171: # 249 "/usr/aarch64-linux-gnu/include/stdio.h" 3 900171: extern int fcloseall (void); 900171: # 258 "/usr/aarch64-linux-gnu/include/stdio.h" 3 900171: extern FILE *fopen (const char *__restrict __filename, 900171: const char *__restrict __modes) 900171: __attribute__ ((__malloc__)) __attribute__ ((__malloc__ (fclose, 1))) __attribute__ ((__warn_unused_result__)); 900171: 900171: 900171: 900171: 900171: extern FILE *freopen (const char *__restrict __filename, 900171: const char *__restrict __modes, 900171: FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)); 900171: # 283 "/usr/aarch64-linux-gnu/include/stdio.h" 3 900171: extern FILE *fopen64 (const char *__restrict __filename, 900171: const char *__restrict __modes) 900171: __attribute__ ((__malloc__)) __attribute__ ((__malloc__ (fclose, 1))) __attribute__ ((__warn_unused_result__)); 900171: extern FILE *freopen64 (const char *__restrict __filename, 900171: const char *__restrict __modes, 900171: FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)); 900171: 900171: 900171: 900171: 900171: extern FILE *fdopen (int __fd, const char *__modes) noexcept (true) 900171: __attribute__ ((__malloc__)) __attribute__ ((__malloc__ (fclose, 1))) __attribute__ ((__warn_unused_result__)); 900171: 900171: 900171: 900171: 900171: 900171: extern FILE *fopencookie (void *__restrict __magic_cookie, 900171: const char *__restrict __modes, 900171: cookie_io_functions_t __io_funcs) noexcept (true) 900171: __attribute__ ((__malloc__)) __attribute__ ((__malloc__ (fclose, 1))) __attribute__ ((__warn_unused_result__)); 900171: 900171: 900171: 900171: 900171: extern FILE *fmemopen (void *__s, size_t __len, const char *__modes) 900171: noexcept (true) __attribute__ ((__malloc__)) __attribute__ ((__malloc__ (fclose, 1))) __attribute__ ((__warn_unused_result__)); 900171: 900171: 900171: 900171: 900171: extern FILE *open_memstream (char **__bufloc, size_t *__sizeloc) noexcept (true) 900171: __attribute__ ((__malloc__)) __attribute__ ((__malloc__ (fclose, 1))) __attribute__ ((__warn_unused_result__)); 900171: # 328 "/usr/aarch64-linux-gnu/include/stdio.h" 3 900171: extern void setbuf (FILE *__restrict __stream, char *__restrict __buf) noexcept (true); 900171: 900171: 900171: 900171: extern int setvbuf (FILE *__restrict __stream, char *__restrict __buf, 900171: int __modes, size_t __n) noexcept (true); 900171: 900171: 900171: 900171: 900171: extern void setbuffer (FILE *__restrict __stream, char *__restrict __buf, 900171: size_t __size) noexcept (true); 900171: 900171: 900171: extern void setlinebuf (FILE *__stream) noexcept (true); 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern int fprintf (FILE *__restrict __stream, 900171: const char *__restrict __format, ...); 900171: 900171: 900171: 900171: 900171: extern int printf (const char *__restrict __format, ...); 900171: 900171: extern int sprintf (char *__restrict __s, 900171: const char *__restrict __format, ...) noexcept (true); 900171: 900171: 900171: 900171: 900171: 900171: extern int vfprintf (FILE *__restrict __s, const char *__restrict __format, 900171: __gnuc_va_list __arg); 900171: 900171: 900171: 900171: 900171: extern int vprintf (const char *__restrict __format, __gnuc_va_list __arg); 900171: 900171: extern int vsprintf (char *__restrict __s, const char *__restrict __format, 900171: __gnuc_va_list __arg) noexcept (true); 900171: 900171: 900171: 900171: extern int snprintf (char *__restrict __s, size_t __maxlen, 900171: const char *__restrict __format, ...) 900171: noexcept (true) __attribute__ ((__format__ (__printf__, 3, 4))); 900171: 900171: extern int vsnprintf (char *__restrict __s, size_t __maxlen, 900171: const char *__restrict __format, __gnuc_va_list __arg) 900171: noexcept (true) __attribute__ ((__format__ (__printf__, 3, 0))); 900171: 900171: 900171: 900171: 900171: 900171: extern int vasprintf (char **__restrict __ptr, const char *__restrict __f, 900171: __gnuc_va_list __arg) 900171: noexcept (true) __attribute__ ((__format__ (__printf__, 2, 0))) __attribute__ ((__warn_unused_result__)); 900171: extern int __asprintf (char **__restrict __ptr, 900171: const char *__restrict __fmt, ...) 900171: noexcept (true) __attribute__ ((__format__ (__printf__, 2, 3))) __attribute__ ((__warn_unused_result__)); 900171: extern int asprintf (char **__restrict __ptr, 900171: const char *__restrict __fmt, ...) 900171: noexcept (true) __attribute__ ((__format__ (__printf__, 2, 3))) __attribute__ ((__warn_unused_result__)); 900171: 900171: 900171: 900171: 900171: extern int vdprintf (int __fd, const char *__restrict __fmt, 900171: __gnuc_va_list __arg) 900171: __attribute__ ((__format__ (__printf__, 2, 0))); 900171: extern int dprintf (int __fd, const char *__restrict __fmt, ...) 900171: __attribute__ ((__format__ (__printf__, 2, 3))); 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern int fscanf (FILE *__restrict __stream, 900171: const char *__restrict __format, ...) __attribute__ ((__warn_unused_result__)); 900171: 900171: 900171: 900171: 900171: extern int scanf (const char *__restrict __format, ...) __attribute__ ((__warn_unused_result__)); 900171: 900171: extern int sscanf (const char *__restrict __s, 900171: const char *__restrict __format, ...) noexcept (true); 900171: # 434 "/usr/aarch64-linux-gnu/include/stdio.h" 3 900171: extern int fscanf (FILE *__restrict __stream, const char *__restrict __format, ...) __asm__ ("" "__isoc99_fscanf") 900171: 900171: __attribute__ ((__warn_unused_result__)); 900171: extern int scanf (const char *__restrict __format, ...) __asm__ ("" "__isoc99_scanf") 900171: __attribute__ ((__warn_unused_result__)); 900171: extern int sscanf (const char *__restrict __s, const char *__restrict __format, ...) noexcept (true) __asm__ ("" "__isoc99_sscanf") 900171: 900171: ; 900171: # 459 "/usr/aarch64-linux-gnu/include/stdio.h" 3 900171: extern int vfscanf (FILE *__restrict __s, const char *__restrict __format, 900171: __gnuc_va_list __arg) 900171: __attribute__ ((__format__ (__scanf__, 2, 0))) __attribute__ ((__warn_unused_result__)); 900171: 900171: 900171: 900171: 900171: 900171: extern int vscanf (const char *__restrict __format, __gnuc_va_list __arg) 900171: __attribute__ ((__format__ (__scanf__, 1, 0))) __attribute__ ((__warn_unused_result__)); 900171: 900171: 900171: extern int vsscanf (const char *__restrict __s, 900171: const char *__restrict __format, __gnuc_va_list __arg) 900171: noexcept (true) __attribute__ ((__format__ (__scanf__, 2, 0))); 900171: 900171: 900171: 900171: 900171: 900171: extern int vfscanf (FILE *__restrict __s, const char *__restrict __format, __gnuc_va_list __arg) __asm__ ("" "__isoc99_vfscanf") 900171: 900171: 900171: 900171: __attribute__ ((__format__ (__scanf__, 2, 0))) __attribute__ ((__warn_unused_result__)); 900171: extern int vscanf (const char *__restrict __format, __gnuc_va_list __arg) __asm__ ("" "__isoc99_vscanf") 900171: 900171: __attribute__ ((__format__ (__scanf__, 1, 0))) __attribute__ ((__warn_unused_result__)); 900171: extern int vsscanf (const char *__restrict __s, const char *__restrict __format, __gnuc_va_list __arg) noexcept (true) __asm__ ("" "__isoc99_vsscanf") 900171: 900171: 900171: 900171: __attribute__ ((__format__ (__scanf__, 2, 0))); 900171: # 513 "/usr/aarch64-linux-gnu/include/stdio.h" 3 900171: extern int fgetc (FILE *__stream); 900171: extern int getc (FILE *__stream); 900171: 900171: 900171: 900171: 900171: 900171: extern int getchar (void); 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern int getc_unlocked (FILE *__stream); 900171: extern int getchar_unlocked (void); 900171: # 538 "/usr/aarch64-linux-gnu/include/stdio.h" 3 900171: extern int fgetc_unlocked (FILE *__stream); 900171: # 549 "/usr/aarch64-linux-gnu/include/stdio.h" 3 900171: extern int fputc (int __c, FILE *__stream); 900171: extern int putc (int __c, FILE *__stream); 900171: 900171: 900171: 900171: 900171: 900171: extern int putchar (int __c); 900171: # 565 "/usr/aarch64-linux-gnu/include/stdio.h" 3 900171: extern int fputc_unlocked (int __c, FILE *__stream); 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern int putc_unlocked (int __c, FILE *__stream); 900171: extern int putchar_unlocked (int __c); 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern int getw (FILE *__stream); 900171: 900171: 900171: extern int putw (int __w, FILE *__stream); 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern char *fgets (char *__restrict __s, int __n, FILE *__restrict __stream) 900171: __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 1, 2))); 900171: # 605 "/usr/aarch64-linux-gnu/include/stdio.h" 3 900171: extern char *gets (char *__s) __attribute__ ((__warn_unused_result__)) __attribute__ ((__deprecated__)); 900171: # 615 "/usr/aarch64-linux-gnu/include/stdio.h" 3 900171: extern char *fgets_unlocked (char *__restrict __s, int __n, 900171: FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)) 900171: __attribute__ ((__access__ (__write_only__, 1, 2))); 900171: # 632 "/usr/aarch64-linux-gnu/include/stdio.h" 3 900171: extern __ssize_t __getdelim (char **__restrict __lineptr, 900171: size_t *__restrict __n, int __delimiter, 900171: FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)); 900171: extern __ssize_t getdelim (char **__restrict __lineptr, 900171: size_t *__restrict __n, int __delimiter, 900171: FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)); 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern __ssize_t getline (char **__restrict __lineptr, 900171: size_t *__restrict __n, 900171: FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)); 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern int fputs (const char *__restrict __s, FILE *__restrict __stream); 900171: 900171: 900171: 900171: 900171: 900171: extern int puts (const char *__s); 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern int ungetc (int __c, FILE *__stream); 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern size_t fread (void *__restrict __ptr, size_t __size, 900171: size_t __n, FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)); 900171: 900171: 900171: 900171: 900171: extern size_t fwrite (const void *__restrict __ptr, size_t __size, 900171: size_t __n, FILE *__restrict __s); 900171: # 691 "/usr/aarch64-linux-gnu/include/stdio.h" 3 900171: extern int fputs_unlocked (const char *__restrict __s, 900171: FILE *__restrict __stream); 900171: # 702 "/usr/aarch64-linux-gnu/include/stdio.h" 3 900171: extern size_t fread_unlocked (void *__restrict __ptr, size_t __size, 900171: size_t __n, FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)); 900171: extern size_t fwrite_unlocked (const void *__restrict __ptr, size_t __size, 900171: size_t __n, FILE *__restrict __stream); 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern int fseek (FILE *__stream, long int __off, int __whence); 900171: 900171: 900171: 900171: 900171: extern long int ftell (FILE *__stream) __attribute__ ((__warn_unused_result__)); 900171: 900171: 900171: 900171: 900171: extern void rewind (FILE *__stream); 900171: # 736 "/usr/aarch64-linux-gnu/include/stdio.h" 3 900171: extern int fseeko (FILE *__stream, __off_t __off, int __whence); 900171: 900171: 900171: 900171: 900171: extern __off_t ftello (FILE *__stream) __attribute__ ((__warn_unused_result__)); 900171: # 760 "/usr/aarch64-linux-gnu/include/stdio.h" 3 900171: extern int fgetpos (FILE *__restrict __stream, fpos_t *__restrict __pos); 900171: 900171: 900171: 900171: 900171: extern int fsetpos (FILE *__stream, const fpos_t *__pos); 900171: # 779 "/usr/aarch64-linux-gnu/include/stdio.h" 3 900171: extern int fseeko64 (FILE *__stream, __off64_t __off, int __whence); 900171: extern __off64_t ftello64 (FILE *__stream) __attribute__ ((__warn_unused_result__)); 900171: extern int fgetpos64 (FILE *__restrict __stream, fpos64_t *__restrict __pos); 900171: extern int fsetpos64 (FILE *__stream, const fpos64_t *__pos); 900171: 900171: 900171: 900171: extern void clearerr (FILE *__stream) noexcept (true); 900171: 900171: extern int feof (FILE *__stream) noexcept (true) __attribute__ ((__warn_unused_result__)); 900171: 900171: extern int ferror (FILE *__stream) noexcept (true) __attribute__ ((__warn_unused_result__)); 900171: 900171: 900171: 900171: extern void clearerr_unlocked (FILE *__stream) noexcept (true); 900171: extern int feof_unlocked (FILE *__stream) noexcept (true) __attribute__ ((__warn_unused_result__)); 900171: extern int ferror_unlocked (FILE *__stream) noexcept (true) __attribute__ ((__warn_unused_result__)); 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern void perror (const char *__s); 900171: 900171: 900171: 900171: 900171: extern int fileno (FILE *__stream) noexcept (true) __attribute__ ((__warn_unused_result__)); 900171: 900171: 900171: 900171: 900171: extern int fileno_unlocked (FILE *__stream) noexcept (true) __attribute__ ((__warn_unused_result__)); 900171: # 823 "/usr/aarch64-linux-gnu/include/stdio.h" 3 900171: extern int pclose (FILE *__stream); 900171: 900171: 900171: 900171: 900171: 900171: extern FILE *popen (const char *__command, const char *__modes) 900171: __attribute__ ((__malloc__)) __attribute__ ((__malloc__ (pclose, 1))) __attribute__ ((__warn_unused_result__)); 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern char *ctermid (char *__s) noexcept (true) 900171: __attribute__ ((__access__ (__write_only__, 1))); 900171: 900171: 900171: 900171: 900171: 900171: extern char *cuserid (char *__s) 900171: __attribute__ ((__access__ (__write_only__, 1))); 900171: 900171: 900171: 900171: 900171: struct obstack; 900171: 900171: 900171: extern int obstack_printf (struct obstack *__restrict __obstack, 900171: const char *__restrict __format, ...) 900171: noexcept (true) __attribute__ ((__format__ (__printf__, 2, 3))); 900171: extern int obstack_vprintf (struct obstack *__restrict __obstack, 900171: const char *__restrict __format, 900171: __gnuc_va_list __args) 900171: noexcept (true) __attribute__ ((__format__ (__printf__, 2, 0))); 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern void flockfile (FILE *__stream) noexcept (true); 900171: 900171: 900171: 900171: extern int ftrylockfile (FILE *__stream) noexcept (true) __attribute__ ((__warn_unused_result__)); 900171: 900171: 900171: extern void funlockfile (FILE *__stream) noexcept (true); 900171: # 885 "/usr/aarch64-linux-gnu/include/stdio.h" 3 900171: extern int __uflow (FILE *); 900171: extern int __overflow (FILE *, int); 900171: 900171: 900171: 900171: # 1 "/usr/aarch64-linux-gnu/include/bits/stdio2-decl.h" 1 3 900171: # 26 "/usr/aarch64-linux-gnu/include/bits/stdio2-decl.h" 3 900171: extern int __sprintf_chk (char *__restrict __s, int __flag, size_t __slen, 900171: const char *__restrict __format, ...) noexcept (true) 900171: __attribute__ ((__access__ (__write_only__, 1, 3))); 900171: extern int __vsprintf_chk (char *__restrict __s, int __flag, size_t __slen, 900171: const char *__restrict __format, 900171: __gnuc_va_list __ap) noexcept (true) 900171: __attribute__ ((__access__ (__write_only__, 1, 3))); 900171: 900171: 900171: 900171: extern int __snprintf_chk (char *__restrict __s, size_t __n, int __flag, 900171: size_t __slen, const char *__restrict __format, 900171: ...) noexcept (true) 900171: __attribute__ ((__access__ (__write_only__, 1, 2))); 900171: extern int __vsnprintf_chk (char *__restrict __s, size_t __n, int __flag, 900171: size_t __slen, const char *__restrict __format, 900171: __gnuc_va_list __ap) noexcept (true) 900171: __attribute__ ((__access__ (__write_only__, 1, 2))); 900171: 900171: 900171: 900171: 900171: 900171: extern int __fprintf_chk (FILE *__restrict __stream, int __flag, 900171: const char *__restrict __format, ...); 900171: extern int __printf_chk (int __flag, const char *__restrict __format, ...); 900171: extern int __vfprintf_chk (FILE *__restrict __stream, int __flag, 900171: const char *__restrict __format, __gnuc_va_list __ap); 900171: extern int __vprintf_chk (int __flag, const char *__restrict __format, 900171: __gnuc_va_list __ap); 900171: 900171: 900171: extern int __dprintf_chk (int __fd, int __flag, const char *__restrict __fmt, 900171: ...) __attribute__ ((__format__ (__printf__, 3, 4))); 900171: extern int __vdprintf_chk (int __fd, int __flag, 900171: const char *__restrict __fmt, __gnuc_va_list __arg) 900171: __attribute__ ((__format__ (__printf__, 3, 0))); 900171: 900171: 900171: 900171: 900171: extern int __asprintf_chk (char **__restrict __ptr, int __flag, 900171: const char *__restrict __fmt, ...) 900171: noexcept (true) __attribute__ ((__format__ (__printf__, 3, 4))) __attribute__ ((__warn_unused_result__)); 900171: extern int __vasprintf_chk (char **__restrict __ptr, int __flag, 900171: const char *__restrict __fmt, __gnuc_va_list __arg) 900171: noexcept (true) __attribute__ ((__format__ (__printf__, 3, 0))) __attribute__ ((__warn_unused_result__)); 900171: extern int __obstack_printf_chk (struct obstack *__restrict __obstack, 900171: int __flag, const char *__restrict __format, 900171: ...) 900171: noexcept (true) __attribute__ ((__format__ (__printf__, 3, 4))); 900171: extern int __obstack_vprintf_chk (struct obstack *__restrict __obstack, 900171: int __flag, 900171: const char *__restrict __format, 900171: __gnuc_va_list __args) 900171: noexcept (true) __attribute__ ((__format__ (__printf__, 3, 0))); 900171: 900171: 900171: 900171: 900171: 900171: extern char *__gets_chk (char *__str, size_t) __attribute__ ((__warn_unused_result__)); 900171: 900171: 900171: extern char *__fgets_chk (char *__restrict __s, size_t __size, int __n, 900171: FILE *__restrict __stream) 900171: __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 1, 3))); 900171: 900171: extern size_t __fread_chk (void *__restrict __ptr, size_t __ptrlen, 900171: size_t __size, size_t __n, 900171: FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)); 900171: 900171: 900171: extern char *__fgets_unlocked_chk (char *__restrict __s, size_t __size, 900171: int __n, FILE *__restrict __stream) 900171: __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 1, 3))); 900171: 900171: 900171: 900171: 900171: extern size_t __fread_unlocked_chk (void *__restrict __ptr, size_t __ptrlen, 900171: size_t __size, size_t __n, 900171: FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)); 900171: # 891 "/usr/aarch64-linux-gnu/include/stdio.h" 2 3 900171: # 902 "/usr/aarch64-linux-gnu/include/stdio.h" 3 900171: # 1 "/usr/aarch64-linux-gnu/include/bits/stdio.h" 1 3 900171: # 46 "/usr/aarch64-linux-gnu/include/bits/stdio.h" 3 900171: extern __inline __attribute__ ((__gnu_inline__)) int 900171: getchar (void) 900171: { 900171: return getc (stdin); 900171: } 900171: 900171: 900171: 900171: 900171: extern __inline __attribute__ ((__gnu_inline__)) int 900171: fgetc_unlocked (FILE *__fp) 900171: { 900171: return (__builtin_expect (((__fp)->_IO_read_ptr >= (__fp)->_IO_read_end), 0) ? __uflow (__fp) : *(unsigned char *) (__fp)->_IO_read_ptr++); 900171: } 900171: 900171: 900171: 900171: 900171: 900171: extern __inline __attribute__ ((__gnu_inline__)) int 900171: getc_unlocked (FILE *__fp) 900171: { 900171: return (__builtin_expect (((__fp)->_IO_read_ptr >= (__fp)->_IO_read_end), 0) ? __uflow (__fp) : *(unsigned char *) (__fp)->_IO_read_ptr++); 900171: } 900171: 900171: 900171: extern __inline __attribute__ ((__gnu_inline__)) int 900171: getchar_unlocked (void) 900171: { 900171: return (__builtin_expect (((stdin)->_IO_read_ptr >= (stdin)->_IO_read_end), 0) ? __uflow (stdin) : *(unsigned char *) (stdin)->_IO_read_ptr++); 900171: } 900171: 900171: 900171: 900171: 900171: extern __inline __attribute__ ((__gnu_inline__)) int 900171: putchar (int __c) 900171: { 900171: return putc (__c, stdout); 900171: } 900171: 900171: 900171: 900171: 900171: extern __inline __attribute__ ((__gnu_inline__)) int 900171: fputc_unlocked (int __c, FILE *__stream) 900171: { 900171: return (__builtin_expect (((__stream)->_IO_write_ptr >= (__stream)->_IO_write_end), 0) ? __overflow (__stream, (unsigned char) (__c)) : (unsigned char) (*(__stream)->_IO_write_ptr++ = (__c))); 900171: } 900171: 900171: 900171: 900171: 900171: 900171: extern __inline __attribute__ ((__gnu_inline__)) int 900171: putc_unlocked (int __c, FILE *__stream) 900171: { 900171: return (__builtin_expect (((__stream)->_IO_write_ptr >= (__stream)->_IO_write_end), 0) ? __overflow (__stream, (unsigned char) (__c)) : (unsigned char) (*(__stream)->_IO_write_ptr++ = (__c))); 900171: } 900171: 900171: 900171: extern __inline __attribute__ ((__gnu_inline__)) int 900171: putchar_unlocked (int __c) 900171: { 900171: return (__builtin_expect (((stdout)->_IO_write_ptr >= (stdout)->_IO_write_end), 0) ? __overflow (stdout, (unsigned char) (__c)) : (unsigned char) (*(stdout)->_IO_write_ptr++ = (__c))); 900171: } 900171: 900171: 900171: 900171: 900171: 900171: extern __inline __attribute__ ((__gnu_inline__)) __ssize_t 900171: getline (char **__lineptr, size_t *__n, FILE *__stream) 900171: { 900171: return __getdelim (__lineptr, __n, '\n', __stream); 900171: } 900171: 900171: 900171: 900171: 900171: 900171: extern __inline __attribute__ ((__gnu_inline__)) int 900171: __attribute__ ((__leaf__)) feof_unlocked (FILE *__stream) noexcept (true) 900171: { 900171: return (((__stream)->_flags & 0x0010) != 0); 900171: } 900171: 900171: 900171: extern __inline __attribute__ ((__gnu_inline__)) int 900171: __attribute__ ((__leaf__)) ferror_unlocked (FILE *__stream) noexcept (true) 900171: { 900171: return (((__stream)->_flags & 0x0020) != 0); 900171: } 900171: # 903 "/usr/aarch64-linux-gnu/include/stdio.h" 2 3 900171: 900171: 900171: 900171: # 1 "/usr/aarch64-linux-gnu/include/bits/stdio2.h" 1 3 900171: # 27 "/usr/aarch64-linux-gnu/include/bits/stdio2.h" 3 900171: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 900171: __attribute__ ((__leaf__)) sprintf (char *__restrict __s, const char *__restrict __fmt, ...) noexcept (true) 900171: { 900171: return __builtin___sprintf_chk (__s, 2 - 1, 900171: __builtin_object_size (__s, 2 > 1), __fmt, 900171: __builtin_va_arg_pack ()); 900171: } 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 900171: __attribute__ ((__leaf__)) vsprintf (char *__restrict __s, const char *__restrict __fmt, __gnuc_va_list __ap) noexcept (true) 900171: 900171: { 900171: return __builtin___vsprintf_chk (__s, 2 - 1, 900171: __builtin_object_size (__s, 2 > 1), __fmt, __ap); 900171: } 900171: 900171: 900171: 900171: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 900171: __attribute__ ((__leaf__)) snprintf (char *__restrict __s, size_t __n, const char *__restrict __fmt, ...) noexcept (true) 900171: 900171: { 900171: return __builtin___snprintf_chk (__s, __n, 2 - 1, 900171: __builtin_object_size (__s, 2 > 1), __fmt, 900171: __builtin_va_arg_pack ()); 900171: } 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 900171: __attribute__ ((__leaf__)) vsnprintf (char *__restrict __s, size_t __n, const char *__restrict __fmt, __gnuc_va_list __ap) noexcept (true) 900171: 900171: { 900171: return __builtin___vsnprintf_chk (__s, __n, 2 - 1, 900171: __builtin_object_size (__s, 2 > 1), __fmt, __ap); 900171: } 900171: 900171: 900171: 900171: 900171: 900171: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 900171: fprintf (FILE *__restrict __stream, const char *__restrict __fmt, ...) 900171: { 900171: return __fprintf_chk (__stream, 2 - 1, __fmt, 900171: __builtin_va_arg_pack ()); 900171: } 900171: 900171: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 900171: printf (const char *__restrict __fmt, ...) 900171: { 900171: return __printf_chk (2 - 1, __fmt, __builtin_va_arg_pack ()); 900171: } 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 900171: vprintf (const char *__restrict __fmt, __gnuc_va_list __ap) 900171: { 900171: 900171: return __vfprintf_chk (stdout, 2 - 1, __fmt, __ap); 900171: 900171: 900171: 900171: } 900171: 900171: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 900171: vfprintf (FILE *__restrict __stream, 900171: const char *__restrict __fmt, __gnuc_va_list __ap) 900171: { 900171: return __vfprintf_chk (__stream, 2 - 1, __fmt, __ap); 900171: } 900171: 900171: 900171: 900171: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 900171: dprintf (int __fd, const char *__restrict __fmt, ...) 900171: { 900171: return __dprintf_chk (__fd, 2 - 1, __fmt, 900171: __builtin_va_arg_pack ()); 900171: } 900171: 900171: 900171: 900171: 900171: 900171: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 900171: vdprintf (int __fd, const char *__restrict __fmt, __gnuc_va_list __ap) 900171: { 900171: return __vdprintf_chk (__fd, 2 - 1, __fmt, __ap); 900171: } 900171: 900171: 900171: 900171: 900171: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 900171: __attribute__ ((__leaf__)) asprintf (char **__restrict __ptr, const char *__restrict __fmt, ...) noexcept (true) 900171: { 900171: return __asprintf_chk (__ptr, 2 - 1, __fmt, 900171: __builtin_va_arg_pack ()); 900171: } 900171: 900171: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 900171: __attribute__ ((__leaf__)) __asprintf (char **__restrict __ptr, const char *__restrict __fmt, ...) noexcept (true) 900171: 900171: { 900171: return __asprintf_chk (__ptr, 2 - 1, __fmt, 900171: __builtin_va_arg_pack ()); 900171: } 900171: 900171: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 900171: __attribute__ ((__leaf__)) obstack_printf (struct obstack *__restrict __obstack, const char *__restrict __fmt, ...) noexcept (true) 900171: 900171: { 900171: return __obstack_printf_chk (__obstack, 2 - 1, __fmt, 900171: __builtin_va_arg_pack ()); 900171: } 900171: # 165 "/usr/aarch64-linux-gnu/include/bits/stdio2.h" 3 900171: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 900171: __attribute__ ((__leaf__)) vasprintf (char **__restrict __ptr, const char *__restrict __fmt, __gnuc_va_list __ap) noexcept (true) 900171: 900171: { 900171: return __vasprintf_chk (__ptr, 2 - 1, __fmt, __ap); 900171: } 900171: 900171: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 900171: __attribute__ ((__leaf__)) obstack_vprintf (struct obstack *__restrict __obstack, const char *__restrict __fmt, __gnuc_va_list __ap) noexcept (true) 900171: 900171: { 900171: return __obstack_vprintf_chk (__obstack, 2 - 1, __fmt, 900171: __ap); 900171: } 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern char *__gets_warn (char *__str) __asm__ ("" "gets") 900171: __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("please use fgets or getline instead, gets can't " "specify buffer size"))) 900171: ; 900171: 900171: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) char * 900171: gets (char *__str) 900171: { 900171: if (__builtin_object_size (__str, 2 > 1) != (size_t) -1) 900171: return __gets_chk (__str, __builtin_object_size (__str, 2 > 1)); 900171: return __gets_warn (__str); 900171: } 900171: 900171: 900171: extern char *__fgets_alias (char *__restrict __s, int __n, FILE *__restrict __stream) __asm__ ("" "fgets") 900171: 900171: 900171: __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 1, 2))); 900171: extern char *__fgets_chk_warn (char *__restrict __s, size_t __size, int __n, FILE *__restrict __stream) __asm__ ("" "__fgets_chk") 900171: 900171: 900171: __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("fgets called with bigger size than length " "of destination buffer"))) 900171: ; 900171: 900171: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 1, 2))) char * 900171: fgets (char *__restrict __s, int __n, FILE *__restrict __stream) 900171: { 900171: size_t sz = __builtin_object_size (__s, 2 > 1); 900171: if (((__builtin_constant_p (sz) && (sz) == (long unsigned int) -1) || (((__typeof (__n)) 0 < (__typeof (__n)) -1 || (__builtin_constant_p (__n) && (__n) > 0)) && __builtin_constant_p ((((long unsigned int) (__n)) <= ((sz)) / ((sizeof (char))))) && (((long unsigned int) (__n)) <= ((sz)) / ((sizeof (char))))))) 900171: return __fgets_alias (__s, __n, __stream); 900171: if ((((__typeof (__n)) 0 < (__typeof (__n)) -1 || (__builtin_constant_p (__n) && (__n) > 0)) && __builtin_constant_p ((((long unsigned int) (__n)) <= (sz) / (sizeof (char)))) && !(((long unsigned int) (__n)) <= (sz) / (sizeof (char))))) 900171: return __fgets_chk_warn (__s, sz, __n, __stream); 900171: return __fgets_chk (__s, sz, __n, __stream); 900171: } 900171: 900171: extern size_t __fread_alias (void *__restrict __ptr, size_t __size, size_t __n, FILE *__restrict __stream) __asm__ ("" "fread") 900171: 900171: 900171: __attribute__ ((__warn_unused_result__)); 900171: extern size_t __fread_chk_warn (void *__restrict __ptr, size_t __ptrlen, size_t __size, size_t __n, FILE *__restrict __stream) __asm__ ("" "__fread_chk") 900171: 900171: 900171: 900171: 900171: __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("fread called with bigger size * nmemb than length " "of destination buffer"))) 900171: ; 900171: 900171: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) size_t 900171: fread (void *__restrict __ptr, size_t __size, size_t __n, 900171: FILE *__restrict __stream) 900171: { 900171: size_t sz = __builtin_object_size (__ptr, 0); 900171: if (((__builtin_constant_p (sz) && (sz) == (long unsigned int) -1) || (((__typeof (__n)) 0 < (__typeof (__n)) -1 || (__builtin_constant_p (__n) && (__n) > 0)) && __builtin_constant_p ((((long unsigned int) (__n)) <= ((sz)) / ((__size)))) && (((long unsigned int) (__n)) <= ((sz)) / ((__size)))))) 900171: return __fread_alias (__ptr, __size, __n, __stream); 900171: if ((((__typeof (__n)) 0 < (__typeof (__n)) -1 || (__builtin_constant_p (__n) && (__n) > 0)) && __builtin_constant_p ((((long unsigned int) (__n)) <= (sz) / (__size))) && !(((long unsigned int) (__n)) <= (sz) / (__size)))) 900171: return __fread_chk_warn (__ptr, sz, __size, __n, __stream); 900171: return __fread_chk (__ptr, sz, __size, __n, __stream); 900171: } 900171: 900171: 900171: extern char *__fgets_unlocked_alias (char *__restrict __s, int __n, FILE *__restrict __stream) __asm__ ("" "fgets_unlocked") 900171: 900171: 900171: __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 1, 2))); 900171: extern char *__fgets_unlocked_chk_warn (char *__restrict __s, size_t __size, int __n, FILE *__restrict __stream) __asm__ ("" "__fgets_unlocked_chk") 900171: 900171: 900171: __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("fgets_unlocked called with bigger size than length " "of destination buffer"))) 900171: ; 900171: 900171: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 1, 2))) char * 900171: fgets_unlocked (char *__restrict __s, int __n, FILE *__restrict __stream) 900171: { 900171: size_t sz = __builtin_object_size (__s, 2 > 1); 900171: if (((__builtin_constant_p (sz) && (sz) == (long unsigned int) -1) || (((__typeof (__n)) 0 < (__typeof (__n)) -1 || (__builtin_constant_p (__n) && (__n) > 0)) && __builtin_constant_p ((((long unsigned int) (__n)) <= ((sz)) / ((sizeof (char))))) && (((long unsigned int) (__n)) <= ((sz)) / ((sizeof (char))))))) 900171: return __fgets_unlocked_alias (__s, __n, __stream); 900171: if ((((__typeof (__n)) 0 < (__typeof (__n)) -1 || (__builtin_constant_p (__n) && (__n) > 0)) && __builtin_constant_p ((((long unsigned int) (__n)) <= (sz) / (sizeof (char)))) && !(((long unsigned int) (__n)) <= (sz) / (sizeof (char))))) 900171: return __fgets_unlocked_chk_warn (__s, sz, __n, __stream); 900171: return __fgets_unlocked_chk (__s, sz, __n, __stream); 900171: } 900171: 900171: 900171: 900171: 900171: extern size_t __fread_unlocked_alias (void *__restrict __ptr, size_t __size, size_t __n, FILE *__restrict __stream) __asm__ ("" "fread_unlocked") 900171: 900171: 900171: __attribute__ ((__warn_unused_result__)); 900171: extern size_t __fread_unlocked_chk_warn (void *__restrict __ptr, size_t __ptrlen, size_t __size, size_t __n, FILE *__restrict __stream) __asm__ ("" "__fread_unlocked_chk") 900171: 900171: 900171: 900171: 900171: __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("fread_unlocked called with bigger size * nmemb than " "length of destination buffer"))) 900171: ; 900171: 900171: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) size_t 900171: fread_unlocked (void *__restrict __ptr, size_t __size, size_t __n, 900171: FILE *__restrict __stream) 900171: { 900171: size_t sz = __builtin_object_size (__ptr, 0); 900171: if (((__builtin_constant_p (sz) && (sz) == (long unsigned int) -1) || (((__typeof (__n)) 0 < (__typeof (__n)) -1 || (__builtin_constant_p (__n) && (__n) > 0)) && __builtin_constant_p ((((long unsigned int) (__n)) <= ((sz)) / ((__size)))) && (((long unsigned int) (__n)) <= ((sz)) / ((__size)))))) 900171: { 900171: 900171: if (__builtin_constant_p (__size) 900171: && __builtin_constant_p (__n) 900171: && (__size | __n) < (((size_t) 1) << (8 * sizeof (size_t) / 2)) 900171: && __size * __n <= 8) 900171: { 900171: size_t __cnt = __size * __n; 900171: char *__cptr = (char *) __ptr; 900171: if (__cnt == 0) 900171: return 0; 900171: 900171: for (; __cnt > 0; --__cnt) 900171: { 900171: int __c = getc_unlocked (__stream); 900171: if (__c == (-1)) 900171: break; 900171: *__cptr++ = __c; 900171: } 900171: return (__cptr - (char *) __ptr) / __size; 900171: } 900171: 900171: return __fread_unlocked_alias (__ptr, __size, __n, __stream); 900171: } 900171: if ((((__typeof (__n)) 0 < (__typeof (__n)) -1 || (__builtin_constant_p (__n) && (__n) > 0)) && __builtin_constant_p ((((long unsigned int) (__n)) <= (sz) / (__size))) && !(((long unsigned int) (__n)) <= (sz) / (__size)))) 900171: return __fread_unlocked_chk_warn (__ptr, sz, __size, __n, __stream); 900171: return __fread_unlocked_chk (__ptr, sz, __size, __n, __stream); 900171: 900171: } 900171: # 907 "/usr/aarch64-linux-gnu/include/stdio.h" 2 3 900171: 900171: 900171: } 900171: # 43 "/usr/aarch64-linux-gnu/include/c++/12/cstdio" 2 3 900171: # 96 "/usr/aarch64-linux-gnu/include/c++/12/cstdio" 3 900171: namespace std 900171: { 900171: using ::FILE; 900171: using ::fpos_t; 900171: 900171: using ::clearerr; 900171: using ::fclose; 900171: using ::feof; 900171: using ::ferror; 900171: using ::fflush; 900171: using ::fgetc; 900171: using ::fgetpos; 900171: using ::fgets; 900171: using ::fopen; 900171: using ::fprintf; 900171: using ::fputc; 900171: using ::fputs; 900171: using ::fread; 900171: using ::freopen; 900171: using ::fscanf; 900171: using ::fseek; 900171: using ::fsetpos; 900171: using ::ftell; 900171: using ::fwrite; 900171: using ::getc; 900171: using ::getchar; 900171: 900171: 900171: using ::gets; 900171: 900171: using ::perror; 900171: using ::printf; 900171: using ::putc; 900171: using ::putchar; 900171: using ::puts; 900171: using ::remove; 900171: using ::rename; 900171: using ::rewind; 900171: using ::scanf; 900171: using ::setbuf; 900171: using ::setvbuf; 900171: using ::sprintf; 900171: using ::sscanf; 900171: using ::tmpfile; 900171: 900171: using ::tmpnam; 900171: 900171: using ::ungetc; 900171: using ::vfprintf; 900171: using ::vprintf; 900171: using ::vsprintf; 900171: } 900171: # 157 "/usr/aarch64-linux-gnu/include/c++/12/cstdio" 3 900171: namespace __gnu_cxx 900171: { 900171: # 175 "/usr/aarch64-linux-gnu/include/c++/12/cstdio" 3 900171: using ::snprintf; 900171: using ::vfscanf; 900171: using ::vscanf; 900171: using ::vsnprintf; 900171: using ::vsscanf; 900171: 900171: } 900171: 900171: namespace std 900171: { 900171: using ::__gnu_cxx::snprintf; 900171: using ::__gnu_cxx::vfscanf; 900171: using ::__gnu_cxx::vscanf; 900171: using ::__gnu_cxx::vsnprintf; 900171: using ::__gnu_cxx::vsscanf; 900171: } 900171: # 26 "third_party/butteraugli/butteraugli/butteraugli.h" 2 900171: # 1 "/usr/aarch64-linux-gnu/include/c++/12/cstdlib" 1 3 900171: # 39 "/usr/aarch64-linux-gnu/include/c++/12/cstdlib" 3 900171: 900171: # 40 "/usr/aarch64-linux-gnu/include/c++/12/cstdlib" 3 900171: # 121 "/usr/aarch64-linux-gnu/include/c++/12/cstdlib" 3 900171: extern "C++" 900171: { 900171: namespace std __attribute__ ((__visibility__ ("default"))) 900171: { 900171: 900171: 900171: using ::div_t; 900171: using ::ldiv_t; 900171: 900171: using ::abort; 900171: 900171: 900171: 900171: using ::atexit; 900171: 900171: 900171: using ::at_quick_exit; 900171: 900171: 900171: using ::atof; 900171: using ::atoi; 900171: using ::atol; 900171: using ::bsearch; 900171: using ::calloc; 900171: using ::div; 900171: using ::exit; 900171: using ::free; 900171: using ::getenv; 900171: using ::labs; 900171: using ::ldiv; 900171: using ::malloc; 900171: 900171: using ::mblen; 900171: using ::mbstowcs; 900171: using ::mbtowc; 900171: 900171: using ::qsort; 900171: 900171: 900171: using ::quick_exit; 900171: 900171: 900171: using ::rand; 900171: using ::realloc; 900171: using ::srand; 900171: using ::strtod; 900171: using ::strtol; 900171: using ::strtoul; 900171: using ::system; 900171: 900171: using ::wcstombs; 900171: using ::wctomb; 900171: 900171: 900171: 900171: inline ldiv_t 900171: div(long __i, long __j) { return ldiv(__i, __j); } 900171: 900171: 900171: 900171: 900171: } 900171: # 195 "/usr/aarch64-linux-gnu/include/c++/12/cstdlib" 3 900171: namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) 900171: { 900171: 900171: 900171: 900171: using ::lldiv_t; 900171: 900171: 900171: 900171: 900171: 900171: using ::_Exit; 900171: 900171: 900171: 900171: using ::llabs; 900171: 900171: inline lldiv_t 900171: div(long long __n, long long __d) 900171: { lldiv_t __q; __q.quot = __n / __d; __q.rem = __n % __d; return __q; } 900171: 900171: using ::lldiv; 900171: # 227 "/usr/aarch64-linux-gnu/include/c++/12/cstdlib" 3 900171: using ::atoll; 900171: using ::strtoll; 900171: using ::strtoull; 900171: 900171: using ::strtof; 900171: using ::strtold; 900171: 900171: 900171: } 900171: 900171: namespace std 900171: { 900171: 900171: using ::__gnu_cxx::lldiv_t; 900171: 900171: using ::__gnu_cxx::_Exit; 900171: 900171: using ::__gnu_cxx::llabs; 900171: using ::__gnu_cxx::div; 900171: using ::__gnu_cxx::lldiv; 900171: 900171: using ::__gnu_cxx::atoll; 900171: using ::__gnu_cxx::strtof; 900171: using ::__gnu_cxx::strtoll; 900171: using ::__gnu_cxx::strtoull; 900171: using ::__gnu_cxx::strtold; 900171: } 900171: 900171: 900171: 900171: } 900171: # 27 "third_party/butteraugli/butteraugli/butteraugli.h" 2 900171: # 1 "/usr/aarch64-linux-gnu/include/c++/12/cstring" 1 3 900171: # 39 "/usr/aarch64-linux-gnu/include/c++/12/cstring" 3 900171: 900171: # 40 "/usr/aarch64-linux-gnu/include/c++/12/cstring" 3 900171: 900171: 900171: # 1 "/usr/aarch64-linux-gnu/include/string.h" 1 3 900171: # 26 "/usr/aarch64-linux-gnu/include/string.h" 3 900171: # 1 "/usr/aarch64-linux-gnu/include/bits/libc-header-start.h" 1 3 900171: # 27 "/usr/aarch64-linux-gnu/include/string.h" 2 3 900171: 900171: extern "C" { 900171: 900171: 900171: 900171: 900171: # 1 "/usr/lib/gcc-cross/aarch64-linux-gnu/12/include/stddef.h" 1 3 4 900171: # 34 "/usr/aarch64-linux-gnu/include/string.h" 2 3 900171: # 43 "/usr/aarch64-linux-gnu/include/string.h" 3 900171: extern void *memcpy (void *__restrict __dest, const void *__restrict __src, 900171: size_t __n) noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 900171: 900171: 900171: extern void *memmove (void *__dest, const void *__src, size_t __n) 900171: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 900171: 900171: 900171: 900171: 900171: 900171: extern void *memccpy (void *__restrict __dest, const void *__restrict __src, 900171: int __c, size_t __n) 900171: noexcept (true) __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__access__ (__write_only__, 1, 4))); 900171: 900171: 900171: 900171: 900171: extern void *memset (void *__s, int __c, size_t __n) noexcept (true) __attribute__ ((__nonnull__ (1))); 900171: 900171: 900171: extern int memcmp (const void *__s1, const void *__s2, size_t __n) 900171: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 900171: # 80 "/usr/aarch64-linux-gnu/include/string.h" 3 900171: extern int __memcmpeq (const void *__s1, const void *__s2, size_t __n) 900171: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 900171: 900171: 900171: 900171: extern "C++" 900171: { 900171: extern void *memchr (void *__s, int __c, size_t __n) 900171: noexcept (true) __asm ("memchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 900171: extern const void *memchr (const void *__s, int __c, size_t __n) 900171: noexcept (true) __asm ("memchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 900171: 900171: 900171: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) void * 900171: memchr (void *__s, int __c, size_t __n) noexcept (true) 900171: { 900171: return __builtin_memchr (__s, __c, __n); 900171: } 900171: 900171: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) const void * 900171: memchr (const void *__s, int __c, size_t __n) noexcept (true) 900171: { 900171: return __builtin_memchr (__s, __c, __n); 900171: } 900171: 900171: } 900171: # 115 "/usr/aarch64-linux-gnu/include/string.h" 3 900171: extern "C++" void *rawmemchr (void *__s, int __c) 900171: noexcept (true) __asm ("rawmemchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 900171: extern "C++" const void *rawmemchr (const void *__s, int __c) 900171: noexcept (true) __asm ("rawmemchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern "C++" void *memrchr (void *__s, int __c, size_t __n) 900171: noexcept (true) __asm ("memrchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) 900171: __attribute__ ((__access__ (__read_only__, 1, 3))); 900171: extern "C++" const void *memrchr (const void *__s, int __c, size_t __n) 900171: noexcept (true) __asm ("memrchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) 900171: __attribute__ ((__access__ (__read_only__, 1, 3))); 900171: # 141 "/usr/aarch64-linux-gnu/include/string.h" 3 900171: extern char *strcpy (char *__restrict __dest, const char *__restrict __src) 900171: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 900171: 900171: extern char *strncpy (char *__restrict __dest, 900171: const char *__restrict __src, size_t __n) 900171: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 900171: 900171: 900171: extern char *strcat (char *__restrict __dest, const char *__restrict __src) 900171: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 900171: 900171: extern char *strncat (char *__restrict __dest, const char *__restrict __src, 900171: size_t __n) noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 900171: 900171: 900171: extern int strcmp (const char *__s1, const char *__s2) 900171: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 900171: 900171: extern int strncmp (const char *__s1, const char *__s2, size_t __n) 900171: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 900171: 900171: 900171: extern int strcoll (const char *__s1, const char *__s2) 900171: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 900171: 900171: extern size_t strxfrm (char *__restrict __dest, 900171: const char *__restrict __src, size_t __n) 900171: noexcept (true) __attribute__ ((__nonnull__ (2))) __attribute__ ((__access__ (__write_only__, 1, 3))); 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern int strcoll_l (const char *__s1, const char *__s2, locale_t __l) 900171: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 3))); 900171: 900171: 900171: extern size_t strxfrm_l (char *__dest, const char *__src, size_t __n, 900171: locale_t __l) noexcept (true) __attribute__ ((__nonnull__ (2, 4))) 900171: __attribute__ ((__access__ (__write_only__, 1, 3))); 900171: 900171: 900171: 900171: 900171: 900171: extern char *strdup (const char *__s) 900171: noexcept (true) __attribute__ ((__malloc__)) __attribute__ ((__nonnull__ (1))); 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern char *strndup (const char *__string, size_t __n) 900171: noexcept (true) __attribute__ ((__malloc__)) __attribute__ ((__nonnull__ (1))); 900171: # 224 "/usr/aarch64-linux-gnu/include/string.h" 3 900171: extern "C++" 900171: { 900171: extern char *strchr (char *__s, int __c) 900171: noexcept (true) __asm ("strchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 900171: extern const char *strchr (const char *__s, int __c) 900171: noexcept (true) __asm ("strchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 900171: 900171: 900171: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) char * 900171: strchr (char *__s, int __c) noexcept (true) 900171: { 900171: return __builtin_strchr (__s, __c); 900171: } 900171: 900171: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) const char * 900171: strchr (const char *__s, int __c) noexcept (true) 900171: { 900171: return __builtin_strchr (__s, __c); 900171: } 900171: 900171: } 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern "C++" 900171: { 900171: extern char *strrchr (char *__s, int __c) 900171: noexcept (true) __asm ("strrchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 900171: extern const char *strrchr (const char *__s, int __c) 900171: noexcept (true) __asm ("strrchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 900171: 900171: 900171: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) char * 900171: strrchr (char *__s, int __c) noexcept (true) 900171: { 900171: return __builtin_strrchr (__s, __c); 900171: } 900171: 900171: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) const char * 900171: strrchr (const char *__s, int __c) noexcept (true) 900171: { 900171: return __builtin_strrchr (__s, __c); 900171: } 900171: 900171: } 900171: # 281 "/usr/aarch64-linux-gnu/include/string.h" 3 900171: extern "C++" char *strchrnul (char *__s, int __c) 900171: noexcept (true) __asm ("strchrnul") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 900171: extern "C++" const char *strchrnul (const char *__s, int __c) 900171: noexcept (true) __asm ("strchrnul") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 900171: # 293 "/usr/aarch64-linux-gnu/include/string.h" 3 900171: extern size_t strcspn (const char *__s, const char *__reject) 900171: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 900171: 900171: 900171: extern size_t strspn (const char *__s, const char *__accept) 900171: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 900171: 900171: 900171: extern "C++" 900171: { 900171: extern char *strpbrk (char *__s, const char *__accept) 900171: noexcept (true) __asm ("strpbrk") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 900171: extern const char *strpbrk (const char *__s, const char *__accept) 900171: noexcept (true) __asm ("strpbrk") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 900171: 900171: 900171: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) char * 900171: strpbrk (char *__s, const char *__accept) noexcept (true) 900171: { 900171: return __builtin_strpbrk (__s, __accept); 900171: } 900171: 900171: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) const char * 900171: strpbrk (const char *__s, const char *__accept) noexcept (true) 900171: { 900171: return __builtin_strpbrk (__s, __accept); 900171: } 900171: 900171: } 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern "C++" 900171: { 900171: extern char *strstr (char *__haystack, const char *__needle) 900171: noexcept (true) __asm ("strstr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 900171: extern const char *strstr (const char *__haystack, const char *__needle) 900171: noexcept (true) __asm ("strstr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 900171: 900171: 900171: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) char * 900171: strstr (char *__haystack, const char *__needle) noexcept (true) 900171: { 900171: return __builtin_strstr (__haystack, __needle); 900171: } 900171: 900171: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) const char * 900171: strstr (const char *__haystack, const char *__needle) noexcept (true) 900171: { 900171: return __builtin_strstr (__haystack, __needle); 900171: } 900171: 900171: } 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern char *strtok (char *__restrict __s, const char *__restrict __delim) 900171: noexcept (true) __attribute__ ((__nonnull__ (2))); 900171: 900171: 900171: 900171: extern char *__strtok_r (char *__restrict __s, 900171: const char *__restrict __delim, 900171: char **__restrict __save_ptr) 900171: noexcept (true) __attribute__ ((__nonnull__ (2, 3))); 900171: 900171: extern char *strtok_r (char *__restrict __s, const char *__restrict __delim, 900171: char **__restrict __save_ptr) 900171: noexcept (true) __attribute__ ((__nonnull__ (2, 3))); 900171: 900171: 900171: 900171: 900171: 900171: extern "C++" char *strcasestr (char *__haystack, const char *__needle) 900171: noexcept (true) __asm ("strcasestr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 900171: extern "C++" const char *strcasestr (const char *__haystack, 900171: const char *__needle) 900171: noexcept (true) __asm ("strcasestr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 900171: # 389 "/usr/aarch64-linux-gnu/include/string.h" 3 900171: extern void *memmem (const void *__haystack, size_t __haystacklen, 900171: const void *__needle, size_t __needlelen) 900171: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 3))) 900171: __attribute__ ((__access__ (__read_only__, 1, 2))) 900171: __attribute__ ((__access__ (__read_only__, 3, 4))); 900171: 900171: 900171: 900171: extern void *__mempcpy (void *__restrict __dest, 900171: const void *__restrict __src, size_t __n) 900171: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 900171: extern void *mempcpy (void *__restrict __dest, 900171: const void *__restrict __src, size_t __n) 900171: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 900171: 900171: 900171: 900171: 900171: extern size_t strlen (const char *__s) 900171: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 900171: 900171: 900171: 900171: 900171: extern size_t strnlen (const char *__string, size_t __maxlen) 900171: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 900171: 900171: 900171: 900171: 900171: extern char *strerror (int __errnum) noexcept (true); 900171: # 444 "/usr/aarch64-linux-gnu/include/string.h" 3 900171: extern char *strerror_r (int __errnum, char *__buf, size_t __buflen) 900171: noexcept (true) __attribute__ ((__nonnull__ (2))) __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 2, 3))); 900171: 900171: 900171: 900171: 900171: extern const char *strerrordesc_np (int __err) noexcept (true); 900171: 900171: extern const char *strerrorname_np (int __err) noexcept (true); 900171: 900171: 900171: 900171: 900171: 900171: extern char *strerror_l (int __errnum, locale_t __l) noexcept (true); 900171: 900171: 900171: 900171: # 1 "/usr/aarch64-linux-gnu/include/strings.h" 1 3 900171: # 23 "/usr/aarch64-linux-gnu/include/strings.h" 3 900171: # 1 "/usr/lib/gcc-cross/aarch64-linux-gnu/12/include/stddef.h" 1 3 4 900171: # 24 "/usr/aarch64-linux-gnu/include/strings.h" 2 3 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern "C" { 900171: 900171: 900171: 900171: extern int bcmp (const void *__s1, const void *__s2, size_t __n) 900171: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 900171: 900171: 900171: extern void bcopy (const void *__src, void *__dest, size_t __n) 900171: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 900171: 900171: 900171: extern void bzero (void *__s, size_t __n) noexcept (true) __attribute__ ((__nonnull__ (1))); 900171: 900171: 900171: 900171: extern "C++" 900171: { 900171: extern char *index (char *__s, int __c) 900171: noexcept (true) __asm ("index") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 900171: extern const char *index (const char *__s, int __c) 900171: noexcept (true) __asm ("index") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 900171: 900171: 900171: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) char * 900171: index (char *__s, int __c) noexcept (true) 900171: { 900171: return __builtin_index (__s, __c); 900171: } 900171: 900171: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) const char * 900171: index (const char *__s, int __c) noexcept (true) 900171: { 900171: return __builtin_index (__s, __c); 900171: } 900171: 900171: } 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern "C++" 900171: { 900171: extern char *rindex (char *__s, int __c) 900171: noexcept (true) __asm ("rindex") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 900171: extern const char *rindex (const char *__s, int __c) 900171: noexcept (true) __asm ("rindex") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 900171: 900171: 900171: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) char * 900171: rindex (char *__s, int __c) noexcept (true) 900171: { 900171: return __builtin_rindex (__s, __c); 900171: } 900171: 900171: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) const char * 900171: rindex (const char *__s, int __c) noexcept (true) 900171: { 900171: return __builtin_rindex (__s, __c); 900171: } 900171: 900171: } 900171: # 104 "/usr/aarch64-linux-gnu/include/strings.h" 3 900171: extern int ffs (int __i) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: 900171: 900171: 900171: extern int ffsl (long int __l) noexcept (true) __attribute__ ((__const__)); 900171: __extension__ extern int ffsll (long long int __ll) 900171: noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: 900171: extern int strcasecmp (const char *__s1, const char *__s2) 900171: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 900171: 900171: 900171: extern int strncasecmp (const char *__s1, const char *__s2, size_t __n) 900171: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern int strcasecmp_l (const char *__s1, const char *__s2, locale_t __loc) 900171: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 3))); 900171: 900171: 900171: 900171: extern int strncasecmp_l (const char *__s1, const char *__s2, 900171: size_t __n, locale_t __loc) 900171: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 4))); 900171: 900171: 900171: } 900171: 900171: 900171: 900171: 900171: 900171: # 1 "/usr/aarch64-linux-gnu/include/bits/strings_fortified.h" 1 3 900171: # 22 "/usr/aarch64-linux-gnu/include/bits/strings_fortified.h" 3 900171: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) void 900171: __attribute__ ((__leaf__)) bcopy (const void *__src, void *__dest, size_t __len) noexcept (true) 900171: { 900171: (void) __builtin___memmove_chk (__dest, __src, __len, 900171: __builtin_object_size (__dest, 0)); 900171: } 900171: 900171: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) void 900171: __attribute__ ((__leaf__)) bzero (void *__dest, size_t __len) noexcept (true) 900171: { 900171: (void) __builtin___memset_chk (__dest, '\0', __len, 900171: __builtin_object_size (__dest, 0)); 900171: } 900171: # 145 "/usr/aarch64-linux-gnu/include/strings.h" 2 3 900171: # 463 "/usr/aarch64-linux-gnu/include/string.h" 2 3 900171: 900171: 900171: 900171: extern void explicit_bzero (void *__s, size_t __n) noexcept (true) __attribute__ ((__nonnull__ (1))) 900171: __attribute__ ((__access__ (__write_only__, 1, 2))); 900171: 900171: 900171: 900171: extern char *strsep (char **__restrict __stringp, 900171: const char *__restrict __delim) 900171: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 900171: 900171: 900171: 900171: 900171: extern char *strsignal (int __sig) noexcept (true); 900171: 900171: 900171: 900171: extern const char *sigabbrev_np (int __sig) noexcept (true); 900171: 900171: 900171: extern const char *sigdescr_np (int __sig) noexcept (true); 900171: 900171: 900171: 900171: extern char *__stpcpy (char *__restrict __dest, const char *__restrict __src) 900171: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 900171: extern char *stpcpy (char *__restrict __dest, const char *__restrict __src) 900171: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 900171: 900171: 900171: 900171: extern char *__stpncpy (char *__restrict __dest, 900171: const char *__restrict __src, size_t __n) 900171: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 900171: extern char *stpncpy (char *__restrict __dest, 900171: const char *__restrict __src, size_t __n) 900171: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 900171: 900171: 900171: 900171: 900171: extern int strverscmp (const char *__s1, const char *__s2) 900171: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 900171: 900171: 900171: extern char *strfry (char *__string) noexcept (true) __attribute__ ((__nonnull__ (1))); 900171: 900171: 900171: extern void *memfrob (void *__s, size_t __n) noexcept (true) __attribute__ ((__nonnull__ (1))) 900171: __attribute__ ((__access__ (__read_write__, 1, 2))); 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern "C++" char *basename (char *__filename) 900171: noexcept (true) __asm ("basename") __attribute__ ((__nonnull__ (1))); 900171: extern "C++" const char *basename (const char *__filename) 900171: noexcept (true) __asm ("basename") __attribute__ ((__nonnull__ (1))); 900171: # 535 "/usr/aarch64-linux-gnu/include/string.h" 3 900171: # 1 "/usr/aarch64-linux-gnu/include/bits/string_fortified.h" 1 3 900171: # 25 "/usr/aarch64-linux-gnu/include/bits/string_fortified.h" 3 900171: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) void * 900171: __attribute__ ((__leaf__)) memcpy (void *__restrict __dest, const void *__restrict __src, size_t __len) noexcept (true) 900171: 900171: { 900171: return __builtin___memcpy_chk (__dest, __src, __len, 900171: __builtin_object_size (__dest, 0)); 900171: } 900171: 900171: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) void * 900171: __attribute__ ((__leaf__)) memmove (void *__dest, const void *__src, size_t __len) noexcept (true) 900171: { 900171: return __builtin___memmove_chk (__dest, __src, __len, 900171: __builtin_object_size (__dest, 0)); 900171: } 900171: 900171: 900171: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) void * 900171: __attribute__ ((__leaf__)) mempcpy (void *__restrict __dest, const void *__restrict __src, size_t __len) noexcept (true) 900171: 900171: { 900171: return __builtin___mempcpy_chk (__dest, __src, __len, 900171: __builtin_object_size (__dest, 0)); 900171: } 900171: # 56 "/usr/aarch64-linux-gnu/include/bits/string_fortified.h" 3 900171: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) void * 900171: __attribute__ ((__leaf__)) memset (void *__dest, int __ch, size_t __len) noexcept (true) 900171: { 900171: return __builtin___memset_chk (__dest, __ch, __len, 900171: __builtin_object_size (__dest, 0)); 900171: } 900171: 900171: 900171: 900171: 900171: void __explicit_bzero_chk (void *__dest, size_t __len, size_t __destlen) 900171: noexcept (true) __attribute__ ((__nonnull__ (1))) __attribute__ ((__access__ (__write_only__, 1, 2))); 900171: 900171: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) void 900171: __attribute__ ((__leaf__)) explicit_bzero (void *__dest, size_t __len) noexcept (true) 900171: { 900171: __explicit_bzero_chk (__dest, __len, __builtin_object_size (__dest, 0)); 900171: } 900171: 900171: 900171: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) char * 900171: __attribute__ ((__leaf__)) strcpy (char *__restrict __dest, const char *__restrict __src) noexcept (true) 900171: { 900171: return __builtin___strcpy_chk (__dest, __src, __builtin_object_size (__dest, 2 > 1)); 900171: } 900171: 900171: 900171: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) char * 900171: __attribute__ ((__leaf__)) stpcpy (char *__restrict __dest, const char *__restrict __src) noexcept (true) 900171: { 900171: return __builtin___stpcpy_chk (__dest, __src, __builtin_object_size (__dest, 2 > 1)); 900171: } 900171: 900171: 900171: 900171: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) char * 900171: __attribute__ ((__leaf__)) strncpy (char *__restrict __dest, const char *__restrict __src, size_t __len) noexcept (true) 900171: 900171: { 900171: return __builtin___strncpy_chk (__dest, __src, __len, 900171: __builtin_object_size (__dest, 2 > 1)); 900171: } 900171: 900171: 900171: 900171: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) char * 900171: __attribute__ ((__leaf__)) stpncpy (char *__dest, const char *__src, size_t __n) noexcept (true) 900171: { 900171: return __builtin___stpncpy_chk (__dest, __src, __n, 900171: __builtin_object_size (__dest, 2 > 1)); 900171: } 900171: # 127 "/usr/aarch64-linux-gnu/include/bits/string_fortified.h" 3 900171: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) char * 900171: __attribute__ ((__leaf__)) strcat (char *__restrict __dest, const char *__restrict __src) noexcept (true) 900171: { 900171: return __builtin___strcat_chk (__dest, __src, __builtin_object_size (__dest, 2 > 1)); 900171: } 900171: 900171: 900171: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) char * 900171: __attribute__ ((__leaf__)) strncat (char *__restrict __dest, const char *__restrict __src, size_t __len) noexcept (true) 900171: 900171: { 900171: return __builtin___strncat_chk (__dest, __src, __len, 900171: __builtin_object_size (__dest, 2 > 1)); 900171: } 900171: # 536 "/usr/aarch64-linux-gnu/include/string.h" 2 3 900171: 900171: 900171: 900171: } 900171: # 43 "/usr/aarch64-linux-gnu/include/c++/12/cstring" 2 3 900171: # 71 "/usr/aarch64-linux-gnu/include/c++/12/cstring" 3 900171: extern "C++" 900171: { 900171: namespace std __attribute__ ((__visibility__ ("default"))) 900171: { 900171: 900171: 900171: using ::memchr; 900171: using ::memcmp; 900171: using ::memcpy; 900171: using ::memmove; 900171: using ::memset; 900171: using ::strcat; 900171: using ::strcmp; 900171: using ::strcoll; 900171: using ::strcpy; 900171: using ::strcspn; 900171: using ::strerror; 900171: using ::strlen; 900171: using ::strncat; 900171: using ::strncmp; 900171: using ::strncpy; 900171: using ::strspn; 900171: using ::strtok; 900171: using ::strxfrm; 900171: using ::strchr; 900171: using ::strpbrk; 900171: using ::strrchr; 900171: using ::strstr; 900171: # 122 "/usr/aarch64-linux-gnu/include/c++/12/cstring" 3 900171: 900171: } 900171: } 900171: # 28 "third_party/butteraugli/butteraugli/butteraugli.h" 2 900171: # 1 "/usr/aarch64-linux-gnu/include/c++/12/memory" 1 3 900171: # 47 "/usr/aarch64-linux-gnu/include/c++/12/memory" 3 900171: 900171: # 48 "/usr/aarch64-linux-gnu/include/c++/12/memory" 3 900171: # 63 "/usr/aarch64-linux-gnu/include/c++/12/memory" 3 900171: # 1 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algobase.h" 1 3 900171: # 60 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algobase.h" 3 900171: # 1 "/usr/aarch64-linux-gnu/include/c++/12/bits/functexcept.h" 1 3 900171: # 40 "/usr/aarch64-linux-gnu/include/c++/12/bits/functexcept.h" 3 900171: # 1 "/usr/aarch64-linux-gnu/include/c++/12/bits/exception_defines.h" 1 3 900171: # 41 "/usr/aarch64-linux-gnu/include/c++/12/bits/functexcept.h" 2 3 900171: 900171: namespace std __attribute__ ((__visibility__ ("default"))) 900171: { 900171: 900171: 900171: 900171: void 900171: __throw_bad_exception(void) __attribute__((__noreturn__)); 900171: 900171: 900171: void 900171: __throw_bad_alloc(void) __attribute__((__noreturn__)); 900171: 900171: void 900171: __throw_bad_array_new_length(void) __attribute__((__noreturn__)); 900171: 900171: 900171: void 900171: __throw_bad_cast(void) __attribute__((__noreturn__)); 900171: 900171: void 900171: __throw_bad_typeid(void) __attribute__((__noreturn__)); 900171: 900171: 900171: void 900171: __throw_logic_error(const char*) __attribute__((__noreturn__)); 900171: 900171: void 900171: __throw_domain_error(const char*) __attribute__((__noreturn__)); 900171: 900171: void 900171: __throw_invalid_argument(const char*) __attribute__((__noreturn__)); 900171: 900171: void 900171: __throw_length_error(const char*) __attribute__((__noreturn__)); 900171: 900171: void 900171: __throw_out_of_range(const char*) __attribute__((__noreturn__)); 900171: 900171: void 900171: __throw_out_of_range_fmt(const char*, ...) __attribute__((__noreturn__)) 900171: __attribute__((__format__(__gnu_printf__, 1, 2))); 900171: 900171: void 900171: __throw_runtime_error(const char*) __attribute__((__noreturn__)); 900171: 900171: void 900171: __throw_range_error(const char*) __attribute__((__noreturn__)); 900171: 900171: void 900171: __throw_overflow_error(const char*) __attribute__((__noreturn__)); 900171: 900171: void 900171: __throw_underflow_error(const char*) __attribute__((__noreturn__)); 900171: 900171: 900171: void 900171: __throw_ios_failure(const char*) __attribute__((__noreturn__)); 900171: 900171: void 900171: __throw_ios_failure(const char*, int) __attribute__((__noreturn__)); 900171: 900171: 900171: void 900171: __throw_system_error(int) __attribute__((__noreturn__)); 900171: 900171: 900171: void 900171: __throw_future_error(int) __attribute__((__noreturn__)); 900171: 900171: 900171: void 900171: __throw_bad_function_call() __attribute__((__noreturn__)); 900171: 900171: 900171: } 900171: # 61 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algobase.h" 2 3 900171: 900171: 900171: # 1 "/usr/aarch64-linux-gnu/include/c++/12/ext/numeric_traits.h" 1 3 900171: # 32 "/usr/aarch64-linux-gnu/include/c++/12/ext/numeric_traits.h" 3 900171: 900171: # 33 "/usr/aarch64-linux-gnu/include/c++/12/ext/numeric_traits.h" 3 900171: 900171: 900171: 900171: 900171: namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) 900171: { 900171: 900171: # 50 "/usr/aarch64-linux-gnu/include/c++/12/ext/numeric_traits.h" 3 900171: template 900171: struct __is_integer_nonstrict 900171: : public std::__is_integer<_Tp> 900171: { 900171: using std::__is_integer<_Tp>::__value; 900171: 900171: 900171: enum { __width = __value ? sizeof(_Tp) * 8 : 0 }; 900171: }; 900171: 900171: template 900171: struct __numeric_traits_integer 900171: { 900171: 900171: static_assert(__is_integer_nonstrict<_Value>::__value, 900171: "invalid specialization"); 900171: 900171: 900171: 900171: 900171: static const bool __is_signed = (_Value)(-1) < 0; 900171: static const int __digits 900171: = __is_integer_nonstrict<_Value>::__width - __is_signed; 900171: 900171: 900171: static const _Value __max = __is_signed 900171: ? (((((_Value)1 << (__digits - 1)) - 1) << 1) + 1) 900171: : ~(_Value)0; 900171: static const _Value __min = __is_signed ? -__max - 1 : (_Value)0; 900171: }; 900171: 900171: template 900171: const _Value __numeric_traits_integer<_Value>::__min; 900171: 900171: template 900171: const _Value __numeric_traits_integer<_Value>::__max; 900171: 900171: template 900171: const bool __numeric_traits_integer<_Value>::__is_signed; 900171: 900171: template 900171: const int __numeric_traits_integer<_Value>::__digits; 900171: # 130 "/usr/aarch64-linux-gnu/include/c++/12/ext/numeric_traits.h" 3 900171: __extension__ template<> struct __is_integer_nonstrict<__int128> { enum { __value = 1 }; typedef std::__true_type __type; enum { __width = 128 }; }; __extension__ template<> struct __is_integer_nonstrict { enum { __value = 1 }; typedef std::__true_type __type; enum { __width = 128 }; }; 900171: 900171: 900171: 900171: 900171: 900171: 900171: template 900171: using __int_traits = __numeric_traits_integer<_Tp>; 900171: # 157 "/usr/aarch64-linux-gnu/include/c++/12/ext/numeric_traits.h" 3 900171: template 900171: struct __numeric_traits_floating 900171: { 900171: 900171: static const int __max_digits10 = (2 + (std::__are_same<_Value, float>::__value ? 24 : std::__are_same<_Value, double>::__value ? 53 : 113) * 643L / 2136); 900171: 900171: 900171: static const bool __is_signed = true; 900171: static const int __digits10 = (std::__are_same<_Value, float>::__value ? 6 : std::__are_same<_Value, double>::__value ? 15 : 33); 900171: static const int __max_exponent10 = (std::__are_same<_Value, float>::__value ? 38 : std::__are_same<_Value, double>::__value ? 308 : 4932); 900171: }; 900171: 900171: template 900171: const int __numeric_traits_floating<_Value>::__max_digits10; 900171: 900171: template 900171: const bool __numeric_traits_floating<_Value>::__is_signed; 900171: 900171: template 900171: const int __numeric_traits_floating<_Value>::__digits10; 900171: 900171: template 900171: const int __numeric_traits_floating<_Value>::__max_exponent10; 900171: 900171: 900171: 900171: 900171: 900171: 900171: template 900171: struct __numeric_traits 900171: : public __numeric_traits_integer<_Value> 900171: { }; 900171: 900171: template<> 900171: struct __numeric_traits 900171: : public __numeric_traits_floating 900171: { }; 900171: 900171: template<> 900171: struct __numeric_traits 900171: : public __numeric_traits_floating 900171: { }; 900171: 900171: template<> 900171: struct __numeric_traits 900171: : public __numeric_traits_floating 900171: { }; 900171: # 238 "/usr/aarch64-linux-gnu/include/c++/12/ext/numeric_traits.h" 3 900171: 900171: } 900171: # 64 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algobase.h" 2 3 900171: # 1 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_pair.h" 1 3 900171: # 60 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_pair.h" 3 900171: # 1 "/usr/aarch64-linux-gnu/include/c++/12/type_traits" 1 3 900171: # 32 "/usr/aarch64-linux-gnu/include/c++/12/type_traits" 3 900171: 900171: # 33 "/usr/aarch64-linux-gnu/include/c++/12/type_traits" 3 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: namespace std __attribute__ ((__visibility__ ("default"))) 900171: { 900171: 900171: 900171: template 900171: class reference_wrapper; 900171: # 61 "/usr/aarch64-linux-gnu/include/c++/12/type_traits" 3 900171: template 900171: struct integral_constant 900171: { 900171: static constexpr _Tp value = __v; 900171: typedef _Tp value_type; 900171: typedef integral_constant<_Tp, __v> type; 900171: constexpr operator value_type() const noexcept { return value; } 900171: 900171: 900171: 900171: 900171: 900171: 900171: }; 900171: 900171: 900171: template 900171: constexpr _Tp integral_constant<_Tp, __v>::value; 900171: 900171: 900171: 900171: using true_type = integral_constant; 900171: 900171: 900171: using false_type = integral_constant; 900171: 900171: 900171: 900171: template 900171: using __bool_constant = integral_constant; 900171: # 103 "/usr/aarch64-linux-gnu/include/c++/12/type_traits" 3 900171: template 900171: struct __conditional 900171: { 900171: template 900171: using type = _Tp; 900171: }; 900171: 900171: template<> 900171: struct __conditional 900171: { 900171: template 900171: using type = _Up; 900171: }; 900171: 900171: 900171: template 900171: using __conditional_t 900171: = typename __conditional<_Cond>::template type<_If, _Else>; 900171: 900171: 900171: template 900171: struct __type_identity 900171: { using type = _Type; }; 900171: 900171: template 900171: using __type_identity_t = typename __type_identity<_Tp>::type; 900171: 900171: template 900171: struct __or_; 900171: 900171: template<> 900171: struct __or_<> 900171: : public false_type 900171: { }; 900171: 900171: template 900171: struct __or_<_B1> 900171: : public _B1 900171: { }; 900171: 900171: template 900171: struct __or_<_B1, _B2> 900171: : public __conditional_t<_B1::value, _B1, _B2> 900171: { }; 900171: 900171: template 900171: struct __or_<_B1, _B2, _B3, _Bn...> 900171: : public __conditional_t<_B1::value, _B1, __or_<_B2, _B3, _Bn...>> 900171: { }; 900171: 900171: template 900171: struct __and_; 900171: 900171: template<> 900171: struct __and_<> 900171: : public true_type 900171: { }; 900171: 900171: template 900171: struct __and_<_B1> 900171: : public _B1 900171: { }; 900171: 900171: template 900171: struct __and_<_B1, _B2> 900171: : public __conditional_t<_B1::value, _B2, _B1> 900171: { }; 900171: 900171: template 900171: struct __and_<_B1, _B2, _B3, _Bn...> 900171: : public __conditional_t<_B1::value, __and_<_B2, _B3, _Bn...>, _B1> 900171: { }; 900171: 900171: template 900171: struct __not_ 900171: : public __bool_constant 900171: { }; 900171: # 224 "/usr/aarch64-linux-gnu/include/c++/12/type_traits" 3 900171: template 900171: struct is_reference; 900171: template 900171: struct is_function; 900171: template 900171: struct is_void; 900171: template 900171: struct remove_cv; 900171: template 900171: struct is_const; 900171: 900171: 900171: template 900171: struct __is_array_unknown_bounds; 900171: 900171: 900171: 900171: 900171: template 900171: constexpr true_type __is_complete_or_unbounded(__type_identity<_Tp>) 900171: { return {}; } 900171: 900171: template 900171: constexpr typename __or_< 900171: is_reference<_NestedType>, 900171: is_function<_NestedType>, 900171: is_void<_NestedType>, 900171: __is_array_unknown_bounds<_NestedType> 900171: >::type __is_complete_or_unbounded(_TypeIdentity) 900171: { return {}; } 900171: 900171: 900171: 900171: 900171: 900171: 900171: template 900171: struct __success_type 900171: { typedef _Tp type; }; 900171: 900171: struct __failure_type 900171: { }; 900171: 900171: 900171: template 900171: using __remove_cv_t = typename remove_cv<_Tp>::type; 900171: 900171: 900171: 900171: template 900171: struct __is_void_helper 900171: : public false_type { }; 900171: 900171: template<> 900171: struct __is_void_helper 900171: : public true_type { }; 900171: 900171: 900171: 900171: template 900171: struct is_void 900171: : public __is_void_helper<__remove_cv_t<_Tp>>::type 900171: { }; 900171: 900171: 900171: template 900171: struct __is_integral_helper 900171: : public false_type { }; 900171: 900171: template<> 900171: struct __is_integral_helper 900171: : public true_type { }; 900171: 900171: template<> 900171: struct __is_integral_helper 900171: : public true_type { }; 900171: 900171: template<> 900171: struct __is_integral_helper 900171: : public true_type { }; 900171: 900171: template<> 900171: struct __is_integral_helper 900171: : public true_type { }; 900171: 900171: 900171: 900171: 900171: template<> 900171: struct __is_integral_helper 900171: : public true_type { }; 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: template<> 900171: struct __is_integral_helper 900171: : public true_type { }; 900171: 900171: template<> 900171: struct __is_integral_helper 900171: : public true_type { }; 900171: 900171: template<> 900171: struct __is_integral_helper 900171: : public true_type { }; 900171: 900171: template<> 900171: struct __is_integral_helper 900171: : public true_type { }; 900171: 900171: template<> 900171: struct __is_integral_helper 900171: : public true_type { }; 900171: 900171: template<> 900171: struct __is_integral_helper 900171: : public true_type { }; 900171: 900171: template<> 900171: struct __is_integral_helper 900171: : public true_type { }; 900171: 900171: template<> 900171: struct __is_integral_helper 900171: : public true_type { }; 900171: 900171: template<> 900171: struct __is_integral_helper 900171: : public true_type { }; 900171: 900171: template<> 900171: struct __is_integral_helper 900171: : public true_type { }; 900171: # 412 "/usr/aarch64-linux-gnu/include/c++/12/type_traits" 3 900171: template 900171: struct is_integral 900171: : public __is_integral_helper<__remove_cv_t<_Tp>>::type 900171: { }; 900171: 900171: 900171: template 900171: struct __is_floating_point_helper 900171: : public false_type { }; 900171: 900171: template<> 900171: struct __is_floating_point_helper 900171: : public true_type { }; 900171: 900171: template<> 900171: struct __is_floating_point_helper 900171: : public true_type { }; 900171: 900171: template<> 900171: struct __is_floating_point_helper 900171: : public true_type { }; 900171: # 442 "/usr/aarch64-linux-gnu/include/c++/12/type_traits" 3 900171: template 900171: struct is_floating_point 900171: : public __is_floating_point_helper<__remove_cv_t<_Tp>>::type 900171: { }; 900171: 900171: 900171: template 900171: struct is_array 900171: : public false_type { }; 900171: 900171: template 900171: struct is_array<_Tp[_Size]> 900171: : public true_type { }; 900171: 900171: template 900171: struct is_array<_Tp[]> 900171: : public true_type { }; 900171: 900171: template 900171: struct __is_pointer_helper 900171: : public false_type { }; 900171: 900171: template 900171: struct __is_pointer_helper<_Tp*> 900171: : public true_type { }; 900171: 900171: 900171: template 900171: struct is_pointer 900171: : public __is_pointer_helper<__remove_cv_t<_Tp>>::type 900171: { }; 900171: 900171: 900171: template 900171: struct is_lvalue_reference 900171: : public false_type { }; 900171: 900171: template 900171: struct is_lvalue_reference<_Tp&> 900171: : public true_type { }; 900171: 900171: 900171: template 900171: struct is_rvalue_reference 900171: : public false_type { }; 900171: 900171: template 900171: struct is_rvalue_reference<_Tp&&> 900171: : public true_type { }; 900171: 900171: template 900171: struct __is_member_object_pointer_helper 900171: : public false_type { }; 900171: 900171: template 900171: struct __is_member_object_pointer_helper<_Tp _Cp::*> 900171: : public __not_>::type { }; 900171: 900171: 900171: template 900171: struct is_member_object_pointer 900171: : public __is_member_object_pointer_helper<__remove_cv_t<_Tp>>::type 900171: { }; 900171: 900171: template 900171: struct __is_member_function_pointer_helper 900171: : public false_type { }; 900171: 900171: template 900171: struct __is_member_function_pointer_helper<_Tp _Cp::*> 900171: : public is_function<_Tp>::type { }; 900171: 900171: 900171: template 900171: struct is_member_function_pointer 900171: : public __is_member_function_pointer_helper<__remove_cv_t<_Tp>>::type 900171: { }; 900171: 900171: 900171: template 900171: struct is_enum 900171: : public integral_constant 900171: { }; 900171: 900171: 900171: template 900171: struct is_union 900171: : public integral_constant 900171: { }; 900171: 900171: 900171: template 900171: struct is_class 900171: : public integral_constant 900171: { }; 900171: 900171: 900171: template 900171: struct is_function 900171: : public __bool_constant::value> { }; 900171: 900171: template 900171: struct is_function<_Tp&> 900171: : public false_type { }; 900171: 900171: template 900171: struct is_function<_Tp&&> 900171: : public false_type { }; 900171: 900171: 900171: 900171: template 900171: struct __is_null_pointer_helper 900171: : public false_type { }; 900171: 900171: template<> 900171: struct __is_null_pointer_helper 900171: : public true_type { }; 900171: 900171: 900171: template 900171: struct is_null_pointer 900171: : public __is_null_pointer_helper<__remove_cv_t<_Tp>>::type 900171: { }; 900171: 900171: 900171: 900171: template 900171: struct __is_nullptr_t 900171: : public is_null_pointer<_Tp> 900171: { } __attribute__ ((__deprecated__ ("use '" "std::is_null_pointer" "' instead"))); 900171: 900171: 900171: 900171: 900171: template 900171: struct is_reference 900171: : public __or_, 900171: is_rvalue_reference<_Tp>>::type 900171: { }; 900171: 900171: 900171: template 900171: struct is_arithmetic 900171: : public __or_, is_floating_point<_Tp>>::type 900171: { }; 900171: 900171: 900171: template 900171: struct is_fundamental 900171: : public __or_, is_void<_Tp>, 900171: is_null_pointer<_Tp>>::type 900171: { }; 900171: 900171: 900171: template 900171: struct is_object 900171: : public __not_<__or_, is_reference<_Tp>, 900171: is_void<_Tp>>>::type 900171: { }; 900171: 900171: template 900171: struct is_member_pointer; 900171: 900171: 900171: template 900171: struct is_scalar 900171: : public __or_, is_enum<_Tp>, is_pointer<_Tp>, 900171: is_member_pointer<_Tp>, is_null_pointer<_Tp>>::type 900171: { }; 900171: 900171: 900171: template 900171: struct is_compound 900171: : public __not_>::type { }; 900171: 900171: 900171: template 900171: struct __is_member_pointer_helper 900171: : public false_type { }; 900171: 900171: template 900171: struct __is_member_pointer_helper<_Tp _Cp::*> 900171: : public true_type { }; 900171: 900171: 900171: 900171: template 900171: struct is_member_pointer 900171: : public __is_member_pointer_helper<__remove_cv_t<_Tp>>::type 900171: { }; 900171: 900171: template 900171: struct is_same; 900171: 900171: 900171: template 900171: using __is_one_of = __or_...>; 900171: 900171: 900171: __extension__ 900171: template 900171: using __is_signed_integer = __is_one_of<__remove_cv_t<_Tp>, 900171: signed char, signed short, signed int, signed long, 900171: signed long long 900171: # 659 "/usr/aarch64-linux-gnu/include/c++/12/type_traits" 3 900171: >; 900171: 900171: 900171: __extension__ 900171: template 900171: using __is_unsigned_integer = __is_one_of<__remove_cv_t<_Tp>, 900171: unsigned char, unsigned short, unsigned int, unsigned long, 900171: unsigned long long 900171: # 679 "/usr/aarch64-linux-gnu/include/c++/12/type_traits" 3 900171: >; 900171: 900171: 900171: template 900171: using __is_standard_integer 900171: = __or_<__is_signed_integer<_Tp>, __is_unsigned_integer<_Tp>>; 900171: 900171: 900171: template using __void_t = void; 900171: 900171: 900171: 900171: template 900171: struct __is_referenceable 900171: : public false_type 900171: { }; 900171: 900171: template 900171: struct __is_referenceable<_Tp, __void_t<_Tp&>> 900171: : public true_type 900171: { }; 900171: 900171: 900171: 900171: 900171: 900171: template 900171: struct is_const 900171: : public false_type { }; 900171: 900171: template 900171: struct is_const<_Tp const> 900171: : public true_type { }; 900171: 900171: 900171: template 900171: struct is_volatile 900171: : public false_type { }; 900171: 900171: template 900171: struct is_volatile<_Tp volatile> 900171: : public true_type { }; 900171: 900171: 900171: template 900171: struct is_trivial 900171: : public integral_constant 900171: { 900171: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 900171: "template argument must be a complete class or an unbounded array"); 900171: }; 900171: 900171: 900171: template 900171: struct is_trivially_copyable 900171: : public integral_constant 900171: { 900171: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 900171: "template argument must be a complete class or an unbounded array"); 900171: }; 900171: 900171: 900171: template 900171: struct is_standard_layout 900171: : public integral_constant 900171: { 900171: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 900171: "template argument must be a complete class or an unbounded array"); 900171: }; 900171: 900171: 900171: 900171: 900171: 900171: 900171: template 900171: struct 900171: 900171: is_pod 900171: : public integral_constant 900171: { 900171: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 900171: "template argument must be a complete class or an unbounded array"); 900171: }; 900171: 900171: 900171: 900171: 900171: 900171: template 900171: struct 900171: 900171: is_literal_type 900171: : public integral_constant 900171: { 900171: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 900171: "template argument must be a complete class or an unbounded array"); 900171: }; 900171: 900171: 900171: template 900171: struct is_empty 900171: : public integral_constant 900171: { }; 900171: 900171: 900171: template 900171: struct is_polymorphic 900171: : public integral_constant 900171: { }; 900171: # 801 "/usr/aarch64-linux-gnu/include/c++/12/type_traits" 3 900171: template 900171: struct is_abstract 900171: : public integral_constant 900171: { }; 900171: 900171: 900171: template::value> 900171: struct __is_signed_helper 900171: : public false_type { }; 900171: 900171: template 900171: struct __is_signed_helper<_Tp, true> 900171: : public integral_constant 900171: { }; 900171: 900171: 900171: 900171: template 900171: struct is_signed 900171: : public __is_signed_helper<_Tp>::type 900171: { }; 900171: 900171: 900171: template 900171: struct is_unsigned 900171: : public __and_, __not_>> 900171: { }; 900171: 900171: 900171: template 900171: _Up 900171: __declval(int); 900171: 900171: template 900171: _Tp 900171: __declval(long); 900171: 900171: 900171: template 900171: auto declval() noexcept -> decltype(__declval<_Tp>(0)); 900171: 900171: template 900171: struct extent; 900171: 900171: template 900171: struct remove_all_extents; 900171: 900171: 900171: template 900171: struct __is_array_known_bounds 900171: : public integral_constant::value > 0)> 900171: { }; 900171: 900171: template 900171: struct __is_array_unknown_bounds 900171: : public __and_, __not_>> 900171: { }; 900171: # 867 "/usr/aarch64-linux-gnu/include/c++/12/type_traits" 3 900171: struct __do_is_destructible_impl 900171: { 900171: template().~_Tp())> 900171: static true_type __test(int); 900171: 900171: template 900171: static false_type __test(...); 900171: }; 900171: 900171: template 900171: struct __is_destructible_impl 900171: : public __do_is_destructible_impl 900171: { 900171: typedef decltype(__test<_Tp>(0)) type; 900171: }; 900171: 900171: template, 900171: __is_array_unknown_bounds<_Tp>, 900171: is_function<_Tp>>::value, 900171: bool = __or_, is_scalar<_Tp>>::value> 900171: struct __is_destructible_safe; 900171: 900171: template 900171: struct __is_destructible_safe<_Tp, false, false> 900171: : public __is_destructible_impl::type>::type 900171: { }; 900171: 900171: template 900171: struct __is_destructible_safe<_Tp, true, false> 900171: : public false_type { }; 900171: 900171: template 900171: struct __is_destructible_safe<_Tp, false, true> 900171: : public true_type { }; 900171: 900171: 900171: 900171: template 900171: struct is_destructible 900171: : public __is_destructible_safe<_Tp>::type 900171: { 900171: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 900171: "template argument must be a complete class or an unbounded array"); 900171: }; 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: struct __do_is_nt_destructible_impl 900171: { 900171: template 900171: static __bool_constant().~_Tp())> 900171: __test(int); 900171: 900171: template 900171: static false_type __test(...); 900171: }; 900171: 900171: template 900171: struct __is_nt_destructible_impl 900171: : public __do_is_nt_destructible_impl 900171: { 900171: typedef decltype(__test<_Tp>(0)) type; 900171: }; 900171: 900171: template, 900171: __is_array_unknown_bounds<_Tp>, 900171: is_function<_Tp>>::value, 900171: bool = __or_, is_scalar<_Tp>>::value> 900171: struct __is_nt_destructible_safe; 900171: 900171: template 900171: struct __is_nt_destructible_safe<_Tp, false, false> 900171: : public __is_nt_destructible_impl::type>::type 900171: { }; 900171: 900171: template 900171: struct __is_nt_destructible_safe<_Tp, true, false> 900171: : public false_type { }; 900171: 900171: template 900171: struct __is_nt_destructible_safe<_Tp, false, true> 900171: : public true_type { }; 900171: 900171: 900171: 900171: template 900171: struct is_nothrow_destructible 900171: : public __is_nt_destructible_safe<_Tp>::type 900171: { 900171: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 900171: "template argument must be a complete class or an unbounded array"); 900171: }; 900171: 900171: 900171: template 900171: struct __is_constructible_impl 900171: : public __bool_constant<__is_constructible(_Tp, _Args...)> 900171: { }; 900171: 900171: 900171: 900171: template 900171: struct is_constructible 900171: : public __is_constructible_impl<_Tp, _Args...> 900171: { 900171: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 900171: "template argument must be a complete class or an unbounded array"); 900171: }; 900171: 900171: 900171: template 900171: struct is_default_constructible 900171: : public __is_constructible_impl<_Tp>::type 900171: { 900171: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 900171: "template argument must be a complete class or an unbounded array"); 900171: }; 900171: 900171: 900171: template::value> 900171: struct __is_copy_constructible_impl; 900171: 900171: template 900171: struct __is_copy_constructible_impl<_Tp, false> 900171: : public false_type { }; 900171: 900171: template 900171: struct __is_copy_constructible_impl<_Tp, true> 900171: : public __is_constructible_impl<_Tp, const _Tp&> 900171: { }; 900171: 900171: 900171: 900171: template 900171: struct is_copy_constructible 900171: : public __is_copy_constructible_impl<_Tp> 900171: { 900171: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 900171: "template argument must be a complete class or an unbounded array"); 900171: }; 900171: 900171: 900171: template::value> 900171: struct __is_move_constructible_impl; 900171: 900171: template 900171: struct __is_move_constructible_impl<_Tp, false> 900171: : public false_type { }; 900171: 900171: template 900171: struct __is_move_constructible_impl<_Tp, true> 900171: : public __is_constructible_impl<_Tp, _Tp&&> 900171: { }; 900171: 900171: 900171: 900171: template 900171: struct is_move_constructible 900171: : public __is_move_constructible_impl<_Tp> 900171: { 900171: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 900171: "template argument must be a complete class or an unbounded array"); 900171: }; 900171: 900171: 900171: template 900171: using __is_nothrow_constructible_impl 900171: = __bool_constant<__is_nothrow_constructible(_Tp, _Args...)>; 900171: 900171: 900171: 900171: template 900171: struct is_nothrow_constructible 900171: : public __is_nothrow_constructible_impl<_Tp, _Args...>::type 900171: { 900171: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 900171: "template argument must be a complete class or an unbounded array"); 900171: }; 900171: 900171: 900171: template 900171: struct is_nothrow_default_constructible 900171: : public __bool_constant<__is_nothrow_constructible(_Tp)> 900171: { 900171: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 900171: "template argument must be a complete class or an unbounded array"); 900171: }; 900171: 900171: 900171: template::value> 900171: struct __is_nothrow_copy_constructible_impl; 900171: 900171: template 900171: struct __is_nothrow_copy_constructible_impl<_Tp, false> 900171: : public false_type { }; 900171: 900171: template 900171: struct __is_nothrow_copy_constructible_impl<_Tp, true> 900171: : public __is_nothrow_constructible_impl<_Tp, const _Tp&> 900171: { }; 900171: 900171: 900171: 900171: template 900171: struct is_nothrow_copy_constructible 900171: : public __is_nothrow_copy_constructible_impl<_Tp>::type 900171: { 900171: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 900171: "template argument must be a complete class or an unbounded array"); 900171: }; 900171: 900171: 900171: template::value> 900171: struct __is_nothrow_move_constructible_impl; 900171: 900171: template 900171: struct __is_nothrow_move_constructible_impl<_Tp, false> 900171: : public false_type { }; 900171: 900171: template 900171: struct __is_nothrow_move_constructible_impl<_Tp, true> 900171: : public __is_nothrow_constructible_impl<_Tp, _Tp&&> 900171: { }; 900171: 900171: 900171: 900171: template 900171: struct is_nothrow_move_constructible 900171: : public __is_nothrow_move_constructible_impl<_Tp>::type 900171: { 900171: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 900171: "template argument must be a complete class or an unbounded array"); 900171: }; 900171: 900171: 900171: template 900171: struct is_assignable 900171: : public __bool_constant<__is_assignable(_Tp, _Up)> 900171: { 900171: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 900171: "template argument must be a complete class or an unbounded array"); 900171: }; 900171: 900171: template::value> 900171: struct __is_copy_assignable_impl; 900171: 900171: template 900171: struct __is_copy_assignable_impl<_Tp, false> 900171: : public false_type { }; 900171: 900171: template 900171: struct __is_copy_assignable_impl<_Tp, true> 900171: : public __bool_constant<__is_assignable(_Tp&, const _Tp&)> 900171: { }; 900171: 900171: 900171: template 900171: struct is_copy_assignable 900171: : public __is_copy_assignable_impl<_Tp>::type 900171: { 900171: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 900171: "template argument must be a complete class or an unbounded array"); 900171: }; 900171: 900171: template::value> 900171: struct __is_move_assignable_impl; 900171: 900171: template 900171: struct __is_move_assignable_impl<_Tp, false> 900171: : public false_type { }; 900171: 900171: template 900171: struct __is_move_assignable_impl<_Tp, true> 900171: : public __bool_constant<__is_assignable(_Tp&, _Tp&&)> 900171: { }; 900171: 900171: 900171: template 900171: struct is_move_assignable 900171: : public __is_move_assignable_impl<_Tp>::type 900171: { 900171: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 900171: "template argument must be a complete class or an unbounded array"); 900171: }; 900171: 900171: template 900171: using __is_nothrow_assignable_impl 900171: = __bool_constant<__is_nothrow_assignable(_Tp, _Up)>; 900171: 900171: 900171: template 900171: struct is_nothrow_assignable 900171: : public __is_nothrow_assignable_impl<_Tp, _Up> 900171: { 900171: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 900171: "template argument must be a complete class or an unbounded array"); 900171: }; 900171: 900171: template::value> 900171: struct __is_nt_copy_assignable_impl; 900171: 900171: template 900171: struct __is_nt_copy_assignable_impl<_Tp, false> 900171: : public false_type { }; 900171: 900171: template 900171: struct __is_nt_copy_assignable_impl<_Tp, true> 900171: : public __is_nothrow_assignable_impl<_Tp&, const _Tp&> 900171: { }; 900171: 900171: 900171: template 900171: struct is_nothrow_copy_assignable 900171: : public __is_nt_copy_assignable_impl<_Tp> 900171: { 900171: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 900171: "template argument must be a complete class or an unbounded array"); 900171: }; 900171: 900171: template::value> 900171: struct __is_nt_move_assignable_impl; 900171: 900171: template 900171: struct __is_nt_move_assignable_impl<_Tp, false> 900171: : public false_type { }; 900171: 900171: template 900171: struct __is_nt_move_assignable_impl<_Tp, true> 900171: : public __is_nothrow_assignable_impl<_Tp&, _Tp&&> 900171: { }; 900171: 900171: 900171: template 900171: struct is_nothrow_move_assignable 900171: : public __is_nt_move_assignable_impl<_Tp> 900171: { 900171: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 900171: "template argument must be a complete class or an unbounded array"); 900171: }; 900171: 900171: 900171: template 900171: struct is_trivially_constructible 900171: : public __bool_constant<__is_trivially_constructible(_Tp, _Args...)> 900171: { 900171: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 900171: "template argument must be a complete class or an unbounded array"); 900171: }; 900171: 900171: 900171: template 900171: struct is_trivially_default_constructible 900171: : public __bool_constant<__is_trivially_constructible(_Tp)> 900171: { 900171: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 900171: "template argument must be a complete class or an unbounded array"); 900171: }; 900171: 900171: struct __do_is_implicitly_default_constructible_impl 900171: { 900171: template 900171: static void __helper(const _Tp&); 900171: 900171: template 900171: static true_type __test(const _Tp&, 900171: decltype(__helper({}))* = 0); 900171: 900171: static false_type __test(...); 900171: }; 900171: 900171: template 900171: struct __is_implicitly_default_constructible_impl 900171: : public __do_is_implicitly_default_constructible_impl 900171: { 900171: typedef decltype(__test(declval<_Tp>())) type; 900171: }; 900171: 900171: template 900171: struct __is_implicitly_default_constructible_safe 900171: : public __is_implicitly_default_constructible_impl<_Tp>::type 900171: { }; 900171: 900171: template 900171: struct __is_implicitly_default_constructible 900171: : public __and_<__is_constructible_impl<_Tp>, 900171: __is_implicitly_default_constructible_safe<_Tp>> 900171: { }; 900171: 900171: template::value> 900171: struct __is_trivially_copy_constructible_impl; 900171: 900171: template 900171: struct __is_trivially_copy_constructible_impl<_Tp, false> 900171: : public false_type { }; 900171: 900171: template 900171: struct __is_trivially_copy_constructible_impl<_Tp, true> 900171: : public __and_<__is_copy_constructible_impl<_Tp>, 900171: integral_constant> 900171: { }; 900171: 900171: 900171: template 900171: struct is_trivially_copy_constructible 900171: : public __is_trivially_copy_constructible_impl<_Tp> 900171: { 900171: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 900171: "template argument must be a complete class or an unbounded array"); 900171: }; 900171: 900171: template::value> 900171: struct __is_trivially_move_constructible_impl; 900171: 900171: template 900171: struct __is_trivially_move_constructible_impl<_Tp, false> 900171: : public false_type { }; 900171: 900171: template 900171: struct __is_trivially_move_constructible_impl<_Tp, true> 900171: : public __and_<__is_move_constructible_impl<_Tp>, 900171: integral_constant> 900171: { }; 900171: 900171: 900171: template 900171: struct is_trivially_move_constructible 900171: : public __is_trivially_move_constructible_impl<_Tp> 900171: { 900171: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 900171: "template argument must be a complete class or an unbounded array"); 900171: }; 900171: 900171: 900171: template 900171: struct is_trivially_assignable 900171: : public __bool_constant<__is_trivially_assignable(_Tp, _Up)> 900171: { 900171: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 900171: "template argument must be a complete class or an unbounded array"); 900171: }; 900171: 900171: template::value> 900171: struct __is_trivially_copy_assignable_impl; 900171: 900171: template 900171: struct __is_trivially_copy_assignable_impl<_Tp, false> 900171: : public false_type { }; 900171: 900171: template 900171: struct __is_trivially_copy_assignable_impl<_Tp, true> 900171: : public __bool_constant<__is_trivially_assignable(_Tp&, const _Tp&)> 900171: { }; 900171: 900171: 900171: template 900171: struct is_trivially_copy_assignable 900171: : public __is_trivially_copy_assignable_impl<_Tp> 900171: { 900171: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 900171: "template argument must be a complete class or an unbounded array"); 900171: }; 900171: 900171: template::value> 900171: struct __is_trivially_move_assignable_impl; 900171: 900171: template 900171: struct __is_trivially_move_assignable_impl<_Tp, false> 900171: : public false_type { }; 900171: 900171: template 900171: struct __is_trivially_move_assignable_impl<_Tp, true> 900171: : public __bool_constant<__is_trivially_assignable(_Tp&, _Tp&&)> 900171: { }; 900171: 900171: 900171: template 900171: struct is_trivially_move_assignable 900171: : public __is_trivially_move_assignable_impl<_Tp> 900171: { 900171: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 900171: "template argument must be a complete class or an unbounded array"); 900171: }; 900171: 900171: 900171: template 900171: struct is_trivially_destructible 900171: : public __and_<__is_destructible_safe<_Tp>, 900171: __bool_constant<__has_trivial_destructor(_Tp)>> 900171: { 900171: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 900171: "template argument must be a complete class or an unbounded array"); 900171: }; 900171: 900171: 900171: 900171: template 900171: struct has_virtual_destructor 900171: : public integral_constant 900171: { 900171: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 900171: "template argument must be a complete class or an unbounded array"); 900171: }; 900171: 900171: 900171: 900171: 900171: 900171: template 900171: struct alignment_of 900171: : public integral_constant 900171: { 900171: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 900171: "template argument must be a complete class or an unbounded array"); 900171: }; 900171: 900171: 900171: template 900171: struct rank 900171: : public integral_constant { }; 900171: 900171: template 900171: struct rank<_Tp[_Size]> 900171: : public integral_constant::value> { }; 900171: 900171: template 900171: struct rank<_Tp[]> 900171: : public integral_constant::value> { }; 900171: 900171: 900171: template 900171: struct extent 900171: : public integral_constant { }; 900171: 900171: template 900171: struct extent<_Tp[_Size], _Uint> 900171: : public integral_constant::value> 900171: { }; 900171: 900171: template 900171: struct extent<_Tp[], _Uint> 900171: : public integral_constant::value> 900171: { }; 900171: 900171: 900171: 900171: 900171: 900171: template 900171: struct is_same 900171: 900171: : public integral_constant 900171: 900171: 900171: 900171: { }; 900171: # 1445 "/usr/aarch64-linux-gnu/include/c++/12/type_traits" 3 900171: template 900171: struct is_base_of 900171: : public integral_constant 900171: { }; 900171: 900171: template, is_function<_To>, 900171: is_array<_To>>::value> 900171: struct __is_convertible_helper 900171: { 900171: typedef typename is_void<_To>::type type; 900171: }; 900171: 900171: #pragma GCC diagnostic push 900171: #pragma GCC diagnostic ignored "-Wctor-dtor-privacy" 900171: template 900171: class __is_convertible_helper<_From, _To, false> 900171: { 900171: template 900171: static void __test_aux(_To1) noexcept; 900171: 900171: template(std::declval<_From1>()))> 900171: static true_type 900171: __test(int); 900171: 900171: template 900171: static false_type 900171: __test(...); 900171: 900171: public: 900171: typedef decltype(__test<_From, _To>(0)) type; 900171: }; 900171: #pragma GCC diagnostic pop 900171: 900171: 900171: template 900171: struct is_convertible 900171: : public __is_convertible_helper<_From, _To>::type 900171: { }; 900171: 900171: 900171: template 900171: using __is_array_convertible 900171: = is_convertible<_FromElementType(*)[], _ToElementType(*)[]>; 900171: 900171: template, is_function<_To>, 900171: is_array<_To>>::value> 900171: struct __is_nt_convertible_helper 900171: : is_void<_To> 900171: { }; 900171: 900171: #pragma GCC diagnostic push 900171: #pragma GCC diagnostic ignored "-Wctor-dtor-privacy" 900171: template 900171: class __is_nt_convertible_helper<_From, _To, false> 900171: { 900171: template 900171: static void __test_aux(_To1) noexcept; 900171: 900171: template 900171: static 900171: __bool_constant(std::declval<_From1>()))> 900171: __test(int); 900171: 900171: template 900171: static false_type 900171: __test(...); 900171: 900171: public: 900171: using type = decltype(__test<_From, _To>(0)); 900171: }; 900171: #pragma GCC diagnostic pop 900171: 900171: 900171: template 900171: struct __is_nothrow_convertible 900171: : public __is_nt_convertible_helper<_From, _To>::type 900171: { }; 900171: # 1543 "/usr/aarch64-linux-gnu/include/c++/12/type_traits" 3 900171: template 900171: struct remove_const 900171: { typedef _Tp type; }; 900171: 900171: template 900171: struct remove_const<_Tp const> 900171: { typedef _Tp type; }; 900171: 900171: 900171: template 900171: struct remove_volatile 900171: { typedef _Tp type; }; 900171: 900171: template 900171: struct remove_volatile<_Tp volatile> 900171: { typedef _Tp type; }; 900171: 900171: 900171: template 900171: struct remove_cv 900171: { using type = _Tp; }; 900171: 900171: template 900171: struct remove_cv 900171: { using type = _Tp; }; 900171: 900171: template 900171: struct remove_cv 900171: { using type = _Tp; }; 900171: 900171: template 900171: struct remove_cv 900171: { using type = _Tp; }; 900171: 900171: 900171: template 900171: struct add_const 900171: { typedef _Tp const type; }; 900171: 900171: 900171: template 900171: struct add_volatile 900171: { typedef _Tp volatile type; }; 900171: 900171: 900171: template 900171: struct add_cv 900171: { 900171: typedef typename 900171: add_const::type>::type type; 900171: }; 900171: # 1627 "/usr/aarch64-linux-gnu/include/c++/12/type_traits" 3 900171: template 900171: struct remove_reference 900171: { typedef _Tp type; }; 900171: 900171: template 900171: struct remove_reference<_Tp&> 900171: { typedef _Tp type; }; 900171: 900171: template 900171: struct remove_reference<_Tp&&> 900171: { typedef _Tp type; }; 900171: 900171: template::value> 900171: struct __add_lvalue_reference_helper 900171: { typedef _Tp type; }; 900171: 900171: template 900171: struct __add_lvalue_reference_helper<_Tp, true> 900171: { typedef _Tp& type; }; 900171: 900171: 900171: template 900171: struct add_lvalue_reference 900171: : public __add_lvalue_reference_helper<_Tp> 900171: { }; 900171: 900171: template::value> 900171: struct __add_rvalue_reference_helper 900171: { typedef _Tp type; }; 900171: 900171: template 900171: struct __add_rvalue_reference_helper<_Tp, true> 900171: { typedef _Tp&& type; }; 900171: 900171: 900171: template 900171: struct add_rvalue_reference 900171: : public __add_rvalue_reference_helper<_Tp> 900171: { }; 900171: # 1686 "/usr/aarch64-linux-gnu/include/c++/12/type_traits" 3 900171: template 900171: struct __cv_selector; 900171: 900171: template 900171: struct __cv_selector<_Unqualified, false, false> 900171: { typedef _Unqualified __type; }; 900171: 900171: template 900171: struct __cv_selector<_Unqualified, false, true> 900171: { typedef volatile _Unqualified __type; }; 900171: 900171: template 900171: struct __cv_selector<_Unqualified, true, false> 900171: { typedef const _Unqualified __type; }; 900171: 900171: template 900171: struct __cv_selector<_Unqualified, true, true> 900171: { typedef const volatile _Unqualified __type; }; 900171: 900171: template::value, 900171: bool _IsVol = is_volatile<_Qualified>::value> 900171: class __match_cv_qualifiers 900171: { 900171: typedef __cv_selector<_Unqualified, _IsConst, _IsVol> __match; 900171: 900171: public: 900171: typedef typename __match::__type __type; 900171: }; 900171: 900171: 900171: template 900171: struct __make_unsigned 900171: { typedef _Tp __type; }; 900171: 900171: template<> 900171: struct __make_unsigned 900171: { typedef unsigned char __type; }; 900171: 900171: template<> 900171: struct __make_unsigned 900171: { typedef unsigned char __type; }; 900171: 900171: template<> 900171: struct __make_unsigned 900171: { typedef unsigned short __type; }; 900171: 900171: template<> 900171: struct __make_unsigned 900171: { typedef unsigned int __type; }; 900171: 900171: template<> 900171: struct __make_unsigned 900171: { typedef unsigned long __type; }; 900171: 900171: template<> 900171: struct __make_unsigned 900171: { typedef unsigned long long __type; }; 900171: # 1771 "/usr/aarch64-linux-gnu/include/c++/12/type_traits" 3 900171: template::value, 900171: bool _IsEnum = is_enum<_Tp>::value> 900171: class __make_unsigned_selector; 900171: 900171: template 900171: class __make_unsigned_selector<_Tp, true, false> 900171: { 900171: using __unsigned_type 900171: = typename __make_unsigned<__remove_cv_t<_Tp>>::__type; 900171: 900171: public: 900171: using __type 900171: = typename __match_cv_qualifiers<_Tp, __unsigned_type>::__type; 900171: }; 900171: 900171: class __make_unsigned_selector_base 900171: { 900171: protected: 900171: template struct _List { }; 900171: 900171: template 900171: struct _List<_Tp, _Up...> : _List<_Up...> 900171: { static constexpr size_t __size = sizeof(_Tp); }; 900171: 900171: template 900171: struct __select; 900171: 900171: template 900171: struct __select<_Sz, _List<_Uint, _UInts...>, true> 900171: { using __type = _Uint; }; 900171: 900171: template 900171: struct __select<_Sz, _List<_Uint, _UInts...>, false> 900171: : __select<_Sz, _List<_UInts...>> 900171: { }; 900171: }; 900171: 900171: 900171: template 900171: class __make_unsigned_selector<_Tp, false, true> 900171: : __make_unsigned_selector_base 900171: { 900171: 900171: using _UInts = _List; 900171: 900171: using __unsigned_type = typename __select::__type; 900171: 900171: public: 900171: using __type 900171: = typename __match_cv_qualifiers<_Tp, __unsigned_type>::__type; 900171: }; 900171: 900171: 900171: 900171: 900171: 900171: template<> 900171: struct __make_unsigned 900171: { 900171: using __type 900171: = typename __make_unsigned_selector::__type; 900171: }; 900171: # 1845 "/usr/aarch64-linux-gnu/include/c++/12/type_traits" 3 900171: template<> 900171: struct __make_unsigned 900171: { 900171: using __type 900171: = typename __make_unsigned_selector::__type; 900171: }; 900171: 900171: template<> 900171: struct __make_unsigned 900171: { 900171: using __type 900171: = typename __make_unsigned_selector::__type; 900171: }; 900171: 900171: 900171: 900171: 900171: 900171: 900171: template 900171: struct make_unsigned 900171: { typedef typename __make_unsigned_selector<_Tp>::__type type; }; 900171: 900171: 900171: template<> 900171: struct make_unsigned; 900171: 900171: 900171: 900171: 900171: template 900171: struct __make_signed 900171: { typedef _Tp __type; }; 900171: 900171: template<> 900171: struct __make_signed 900171: { typedef signed char __type; }; 900171: 900171: template<> 900171: struct __make_signed 900171: { typedef signed char __type; }; 900171: 900171: template<> 900171: struct __make_signed 900171: { typedef signed short __type; }; 900171: 900171: template<> 900171: struct __make_signed 900171: { typedef signed int __type; }; 900171: 900171: template<> 900171: struct __make_signed 900171: { typedef signed long __type; }; 900171: 900171: template<> 900171: struct __make_signed 900171: { typedef signed long long __type; }; 900171: # 1929 "/usr/aarch64-linux-gnu/include/c++/12/type_traits" 3 900171: template::value, 900171: bool _IsEnum = is_enum<_Tp>::value> 900171: class __make_signed_selector; 900171: 900171: template 900171: class __make_signed_selector<_Tp, true, false> 900171: { 900171: using __signed_type 900171: = typename __make_signed<__remove_cv_t<_Tp>>::__type; 900171: 900171: public: 900171: using __type 900171: = typename __match_cv_qualifiers<_Tp, __signed_type>::__type; 900171: }; 900171: 900171: 900171: template 900171: class __make_signed_selector<_Tp, false, true> 900171: { 900171: typedef typename __make_unsigned_selector<_Tp>::__type __unsigned_type; 900171: 900171: public: 900171: typedef typename __make_signed_selector<__unsigned_type>::__type __type; 900171: }; 900171: 900171: 900171: 900171: 900171: 900171: template<> 900171: struct __make_signed 900171: { 900171: using __type 900171: = typename __make_signed_selector::__type; 900171: }; 900171: # 1975 "/usr/aarch64-linux-gnu/include/c++/12/type_traits" 3 900171: template<> 900171: struct __make_signed 900171: { 900171: using __type 900171: = typename __make_signed_selector::__type; 900171: }; 900171: 900171: template<> 900171: struct __make_signed 900171: { 900171: using __type 900171: = typename __make_signed_selector::__type; 900171: }; 900171: 900171: 900171: 900171: 900171: 900171: 900171: template 900171: struct make_signed 900171: { typedef typename __make_signed_selector<_Tp>::__type type; }; 900171: 900171: 900171: template<> 900171: struct make_signed; 900171: # 2015 "/usr/aarch64-linux-gnu/include/c++/12/type_traits" 3 900171: template 900171: struct remove_extent 900171: { typedef _Tp type; }; 900171: 900171: template 900171: struct remove_extent<_Tp[_Size]> 900171: { typedef _Tp type; }; 900171: 900171: template 900171: struct remove_extent<_Tp[]> 900171: { typedef _Tp type; }; 900171: 900171: 900171: template 900171: struct remove_all_extents 900171: { typedef _Tp type; }; 900171: 900171: template 900171: struct remove_all_extents<_Tp[_Size]> 900171: { typedef typename remove_all_extents<_Tp>::type type; }; 900171: 900171: template 900171: struct remove_all_extents<_Tp[]> 900171: { typedef typename remove_all_extents<_Tp>::type type; }; 900171: # 2052 "/usr/aarch64-linux-gnu/include/c++/12/type_traits" 3 900171: template 900171: struct __remove_pointer_helper 900171: { typedef _Tp type; }; 900171: 900171: template 900171: struct __remove_pointer_helper<_Tp, _Up*> 900171: { typedef _Up type; }; 900171: 900171: 900171: template 900171: struct remove_pointer 900171: : public __remove_pointer_helper<_Tp, __remove_cv_t<_Tp>> 900171: { }; 900171: 900171: template, 900171: is_void<_Tp>>::value> 900171: struct __add_pointer_helper 900171: { typedef _Tp type; }; 900171: 900171: template 900171: struct __add_pointer_helper<_Tp, true> 900171: { typedef typename remove_reference<_Tp>::type* type; }; 900171: 900171: 900171: template 900171: struct add_pointer 900171: : public __add_pointer_helper<_Tp> 900171: { }; 900171: # 2091 "/usr/aarch64-linux-gnu/include/c++/12/type_traits" 3 900171: template 900171: struct __aligned_storage_msa 900171: { 900171: union __type 900171: { 900171: unsigned char __data[_Len]; 900171: struct __attribute__((__aligned__)) { } __align; 900171: }; 900171: }; 900171: # 2111 "/usr/aarch64-linux-gnu/include/c++/12/type_traits" 3 900171: template::__type)> 900171: struct aligned_storage 900171: { 900171: union type 900171: { 900171: unsigned char __data[_Len]; 900171: struct __attribute__((__aligned__((_Align)))) { } __align; 900171: }; 900171: }; 900171: 900171: template 900171: struct __strictest_alignment 900171: { 900171: static const size_t _S_alignment = 0; 900171: static const size_t _S_size = 0; 900171: }; 900171: 900171: template 900171: struct __strictest_alignment<_Tp, _Types...> 900171: { 900171: static const size_t _S_alignment = 900171: alignof(_Tp) > __strictest_alignment<_Types...>::_S_alignment 900171: ? alignof(_Tp) : __strictest_alignment<_Types...>::_S_alignment; 900171: static const size_t _S_size = 900171: sizeof(_Tp) > __strictest_alignment<_Types...>::_S_size 900171: ? sizeof(_Tp) : __strictest_alignment<_Types...>::_S_size; 900171: }; 900171: # 2150 "/usr/aarch64-linux-gnu/include/c++/12/type_traits" 3 900171: template 900171: struct aligned_union 900171: { 900171: private: 900171: static_assert(sizeof...(_Types) != 0, "At least one type is required"); 900171: 900171: using __strictest = __strictest_alignment<_Types...>; 900171: static const size_t _S_len = _Len > __strictest::_S_size 900171: ? _Len : __strictest::_S_size; 900171: public: 900171: 900171: static const size_t alignment_value = __strictest::_S_alignment; 900171: 900171: typedef typename aligned_storage<_S_len, alignment_value>::type type; 900171: }; 900171: 900171: template 900171: const size_t aligned_union<_Len, _Types...>::alignment_value; 900171: 900171: 900171: 900171: 900171: 900171: template::value, 900171: bool _IsFunction = is_function<_Up>::value> 900171: struct __decay_selector; 900171: 900171: 900171: template 900171: struct __decay_selector<_Up, false, false> 900171: { typedef __remove_cv_t<_Up> __type; }; 900171: 900171: template 900171: struct __decay_selector<_Up, true, false> 900171: { typedef typename remove_extent<_Up>::type* __type; }; 900171: 900171: template 900171: struct __decay_selector<_Up, false, true> 900171: { typedef typename add_pointer<_Up>::type __type; }; 900171: 900171: 900171: 900171: template 900171: class decay 900171: { 900171: typedef typename remove_reference<_Tp>::type __remove_type; 900171: 900171: public: 900171: typedef typename __decay_selector<__remove_type>::__type type; 900171: }; 900171: 900171: 900171: 900171: 900171: template 900171: struct __strip_reference_wrapper 900171: { 900171: typedef _Tp __type; 900171: }; 900171: 900171: template 900171: struct __strip_reference_wrapper > 900171: { 900171: typedef _Tp& __type; 900171: }; 900171: 900171: 900171: template 900171: using __decay_t = typename decay<_Tp>::type; 900171: 900171: template 900171: using __decay_and_strip = __strip_reference_wrapper<__decay_t<_Tp>>; 900171: 900171: 900171: 900171: 900171: template 900171: struct enable_if 900171: { }; 900171: 900171: 900171: template 900171: struct enable_if 900171: { typedef _Tp type; }; 900171: 900171: 900171: 900171: 900171: template 900171: using __enable_if_t = typename enable_if<_Cond, _Tp>::type; 900171: 900171: 900171: template 900171: using _Require = __enable_if_t<__and_<_Cond...>::value>; 900171: 900171: 900171: template 900171: using __remove_cvref_t 900171: = typename remove_cv::type>::type; 900171: 900171: 900171: 900171: 900171: template 900171: struct conditional 900171: { typedef _Iftrue type; }; 900171: 900171: 900171: template 900171: struct conditional 900171: { typedef _Iffalse type; }; 900171: 900171: 900171: template 900171: struct common_type; 900171: 900171: 900171: 900171: 900171: struct __do_common_type_impl 900171: { 900171: template 900171: using __cond_t 900171: = decltype(true ? std::declval<_Tp>() : std::declval<_Up>()); 900171: 900171: 900171: 900171: template 900171: static __success_type<__decay_t<__cond_t<_Tp, _Up>>> 900171: _S_test(int); 900171: # 2290 "/usr/aarch64-linux-gnu/include/c++/12/type_traits" 3 900171: template 900171: static __failure_type 900171: _S_test_2(...); 900171: 900171: template 900171: static decltype(_S_test_2<_Tp, _Up>(0)) 900171: _S_test(...); 900171: }; 900171: 900171: 900171: template<> 900171: struct common_type<> 900171: { }; 900171: 900171: 900171: template 900171: struct common_type<_Tp0> 900171: : public common_type<_Tp0, _Tp0> 900171: { }; 900171: 900171: 900171: template, typename _Dp2 = __decay_t<_Tp2>> 900171: struct __common_type_impl 900171: { 900171: 900171: 900171: using type = common_type<_Dp1, _Dp2>; 900171: }; 900171: 900171: template 900171: struct __common_type_impl<_Tp1, _Tp2, _Tp1, _Tp2> 900171: : private __do_common_type_impl 900171: { 900171: 900171: 900171: using type = decltype(_S_test<_Tp1, _Tp2>(0)); 900171: }; 900171: 900171: 900171: template 900171: struct common_type<_Tp1, _Tp2> 900171: : public __common_type_impl<_Tp1, _Tp2>::type 900171: { }; 900171: 900171: template 900171: struct __common_type_pack 900171: { }; 900171: 900171: template 900171: struct __common_type_fold; 900171: 900171: 900171: template 900171: struct common_type<_Tp1, _Tp2, _Rp...> 900171: : public __common_type_fold, 900171: __common_type_pack<_Rp...>> 900171: { }; 900171: 900171: 900171: 900171: 900171: template 900171: struct __common_type_fold<_CTp, __common_type_pack<_Rp...>, 900171: __void_t> 900171: : public common_type 900171: { }; 900171: 900171: 900171: template 900171: struct __common_type_fold<_CTp, _Rp, void> 900171: { }; 900171: 900171: template::value> 900171: struct __underlying_type_impl 900171: { 900171: using type = __underlying_type(_Tp); 900171: }; 900171: 900171: template 900171: struct __underlying_type_impl<_Tp, false> 900171: { }; 900171: 900171: 900171: 900171: template 900171: struct underlying_type 900171: : public __underlying_type_impl<_Tp> 900171: { }; 900171: 900171: 900171: template 900171: struct __declval_protector 900171: { 900171: static const bool __stop = false; 900171: }; 900171: 900171: 900171: 900171: 900171: 900171: 900171: template 900171: auto declval() noexcept -> decltype(__declval<_Tp>(0)) 900171: { 900171: static_assert(__declval_protector<_Tp>::__stop, 900171: "declval() must not be used!"); 900171: return __declval<_Tp>(0); 900171: } 900171: 900171: 900171: template 900171: struct result_of; 900171: 900171: 900171: 900171: 900171: 900171: 900171: struct __invoke_memfun_ref { }; 900171: struct __invoke_memfun_deref { }; 900171: struct __invoke_memobj_ref { }; 900171: struct __invoke_memobj_deref { }; 900171: struct __invoke_other { }; 900171: 900171: 900171: template 900171: struct __result_of_success : __success_type<_Tp> 900171: { using __invoke_type = _Tag; }; 900171: 900171: 900171: struct __result_of_memfun_ref_impl 900171: { 900171: template 900171: static __result_of_success().*std::declval<_Fp>())(std::declval<_Args>()...) 900171: ), __invoke_memfun_ref> _S_test(int); 900171: 900171: template 900171: static __failure_type _S_test(...); 900171: }; 900171: 900171: template 900171: struct __result_of_memfun_ref 900171: : private __result_of_memfun_ref_impl 900171: { 900171: typedef decltype(_S_test<_MemPtr, _Arg, _Args...>(0)) type; 900171: }; 900171: 900171: 900171: struct __result_of_memfun_deref_impl 900171: { 900171: template 900171: static __result_of_success()).*std::declval<_Fp>())(std::declval<_Args>()...) 900171: ), __invoke_memfun_deref> _S_test(int); 900171: 900171: template 900171: static __failure_type _S_test(...); 900171: }; 900171: 900171: template 900171: struct __result_of_memfun_deref 900171: : private __result_of_memfun_deref_impl 900171: { 900171: typedef decltype(_S_test<_MemPtr, _Arg, _Args...>(0)) type; 900171: }; 900171: 900171: 900171: struct __result_of_memobj_ref_impl 900171: { 900171: template 900171: static __result_of_success().*std::declval<_Fp>() 900171: ), __invoke_memobj_ref> _S_test(int); 900171: 900171: template 900171: static __failure_type _S_test(...); 900171: }; 900171: 900171: template 900171: struct __result_of_memobj_ref 900171: : private __result_of_memobj_ref_impl 900171: { 900171: typedef decltype(_S_test<_MemPtr, _Arg>(0)) type; 900171: }; 900171: 900171: 900171: struct __result_of_memobj_deref_impl 900171: { 900171: template 900171: static __result_of_success()).*std::declval<_Fp>() 900171: ), __invoke_memobj_deref> _S_test(int); 900171: 900171: template 900171: static __failure_type _S_test(...); 900171: }; 900171: 900171: template 900171: struct __result_of_memobj_deref 900171: : private __result_of_memobj_deref_impl 900171: { 900171: typedef decltype(_S_test<_MemPtr, _Arg>(0)) type; 900171: }; 900171: 900171: template 900171: struct __result_of_memobj; 900171: 900171: template 900171: struct __result_of_memobj<_Res _Class::*, _Arg> 900171: { 900171: typedef __remove_cvref_t<_Arg> _Argval; 900171: typedef _Res _Class::* _MemPtr; 900171: typedef typename __conditional_t<__or_, 900171: is_base_of<_Class, _Argval>>::value, 900171: __result_of_memobj_ref<_MemPtr, _Arg>, 900171: __result_of_memobj_deref<_MemPtr, _Arg> 900171: >::type type; 900171: }; 900171: 900171: template 900171: struct __result_of_memfun; 900171: 900171: template 900171: struct __result_of_memfun<_Res _Class::*, _Arg, _Args...> 900171: { 900171: typedef typename remove_reference<_Arg>::type _Argval; 900171: typedef _Res _Class::* _MemPtr; 900171: typedef typename __conditional_t::value, 900171: __result_of_memfun_ref<_MemPtr, _Arg, _Args...>, 900171: __result_of_memfun_deref<_MemPtr, _Arg, _Args...> 900171: >::type type; 900171: }; 900171: 900171: 900171: 900171: 900171: 900171: 900171: template> 900171: struct __inv_unwrap 900171: { 900171: using type = _Tp; 900171: }; 900171: 900171: template 900171: struct __inv_unwrap<_Tp, reference_wrapper<_Up>> 900171: { 900171: using type = _Up&; 900171: }; 900171: 900171: template 900171: struct __result_of_impl 900171: { 900171: typedef __failure_type type; 900171: }; 900171: 900171: template 900171: struct __result_of_impl 900171: : public __result_of_memobj<__decay_t<_MemPtr>, 900171: typename __inv_unwrap<_Arg>::type> 900171: { }; 900171: 900171: template 900171: struct __result_of_impl 900171: : public __result_of_memfun<__decay_t<_MemPtr>, 900171: typename __inv_unwrap<_Arg>::type, _Args...> 900171: { }; 900171: 900171: 900171: struct __result_of_other_impl 900171: { 900171: template 900171: static __result_of_success()(std::declval<_Args>()...) 900171: ), __invoke_other> _S_test(int); 900171: 900171: template 900171: static __failure_type _S_test(...); 900171: }; 900171: 900171: template 900171: struct __result_of_impl 900171: : private __result_of_other_impl 900171: { 900171: typedef decltype(_S_test<_Functor, _ArgTypes...>(0)) type; 900171: }; 900171: 900171: 900171: template 900171: struct __invoke_result 900171: : public __result_of_impl< 900171: is_member_object_pointer< 900171: typename remove_reference<_Functor>::type 900171: >::value, 900171: is_member_function_pointer< 900171: typename remove_reference<_Functor>::type 900171: >::value, 900171: _Functor, _ArgTypes... 900171: >::type 900171: { }; 900171: 900171: 900171: template 900171: struct result_of<_Functor(_ArgTypes...)> 900171: : public __invoke_result<_Functor, _ArgTypes...> 900171: { } ; 900171: # 2642 "/usr/aarch64-linux-gnu/include/c++/12/type_traits" 3 900171: template class _Op, typename... _Args> 900171: struct __detector 900171: { 900171: using value_t = false_type; 900171: using type = _Default; 900171: }; 900171: 900171: 900171: template class _Op, 900171: typename... _Args> 900171: struct __detector<_Default, __void_t<_Op<_Args...>>, _Op, _Args...> 900171: { 900171: using value_t = true_type; 900171: using type = _Op<_Args...>; 900171: }; 900171: 900171: 900171: template class _Op, 900171: typename... _Args> 900171: using __detected_or = __detector<_Default, void, _Op, _Args...>; 900171: 900171: 900171: template class _Op, 900171: typename... _Args> 900171: using __detected_or_t 900171: = typename __detected_or<_Default, _Op, _Args...>::type; 900171: # 2684 "/usr/aarch64-linux-gnu/include/c++/12/type_traits" 3 900171: template 900171: struct __is_swappable; 900171: 900171: template 900171: struct __is_nothrow_swappable; 900171: 900171: template 900171: struct __is_tuple_like_impl : false_type 900171: { }; 900171: 900171: 900171: template 900171: struct __is_tuple_like 900171: : public __is_tuple_like_impl<__remove_cvref_t<_Tp>>::type 900171: { }; 900171: 900171: 900171: template 900171: 900171: inline 900171: _Require<__not_<__is_tuple_like<_Tp>>, 900171: is_move_constructible<_Tp>, 900171: is_move_assignable<_Tp>> 900171: swap(_Tp&, _Tp&) 900171: noexcept(__and_, 900171: is_nothrow_move_assignable<_Tp>>::value); 900171: 900171: template 900171: 900171: inline 900171: __enable_if_t<__is_swappable<_Tp>::value> 900171: swap(_Tp (&__a)[_Nm], _Tp (&__b)[_Nm]) 900171: noexcept(__is_nothrow_swappable<_Tp>::value); 900171: 900171: 900171: namespace __swappable_details { 900171: using std::swap; 900171: 900171: struct __do_is_swappable_impl 900171: { 900171: template(), std::declval<_Tp&>()))> 900171: static true_type __test(int); 900171: 900171: template 900171: static false_type __test(...); 900171: }; 900171: 900171: struct __do_is_nothrow_swappable_impl 900171: { 900171: template 900171: static __bool_constant< 900171: noexcept(swap(std::declval<_Tp&>(), std::declval<_Tp&>())) 900171: > __test(int); 900171: 900171: template 900171: static false_type __test(...); 900171: }; 900171: 900171: } 900171: 900171: template 900171: struct __is_swappable_impl 900171: : public __swappable_details::__do_is_swappable_impl 900171: { 900171: typedef decltype(__test<_Tp>(0)) type; 900171: }; 900171: 900171: template 900171: struct __is_nothrow_swappable_impl 900171: : public __swappable_details::__do_is_nothrow_swappable_impl 900171: { 900171: typedef decltype(__test<_Tp>(0)) type; 900171: }; 900171: 900171: template 900171: struct __is_swappable 900171: : public __is_swappable_impl<_Tp>::type 900171: { }; 900171: 900171: template 900171: struct __is_nothrow_swappable 900171: : public __is_nothrow_swappable_impl<_Tp>::type 900171: { }; 900171: # 2907 "/usr/aarch64-linux-gnu/include/c++/12/type_traits" 3 900171: template::value, typename = void> 900171: struct __is_invocable_impl : false_type { }; 900171: 900171: 900171: template 900171: struct __is_invocable_impl<_Result, _Ret, 900171: true, 900171: __void_t> 900171: : true_type 900171: { }; 900171: 900171: #pragma GCC diagnostic push 900171: #pragma GCC diagnostic ignored "-Wctor-dtor-privacy" 900171: 900171: template 900171: struct __is_invocable_impl<_Result, _Ret, 900171: false, 900171: __void_t> 900171: { 900171: private: 900171: 900171: 900171: static typename _Result::type _S_get(); 900171: 900171: template 900171: static void _S_conv(_Tp); 900171: 900171: 900171: template(_S_get()))> 900171: static true_type 900171: _S_test(int); 900171: 900171: template 900171: static false_type 900171: _S_test(...); 900171: 900171: public: 900171: using type = decltype(_S_test<_Ret>(1)); 900171: }; 900171: #pragma GCC diagnostic pop 900171: 900171: template 900171: struct __is_invocable 900171: : __is_invocable_impl<__invoke_result<_Fn, _ArgTypes...>, void>::type 900171: { }; 900171: 900171: template 900171: constexpr bool __call_is_nt(__invoke_memfun_ref) 900171: { 900171: using _Up = typename __inv_unwrap<_Tp>::type; 900171: return noexcept((std::declval<_Up>().*std::declval<_Fn>())( 900171: std::declval<_Args>()...)); 900171: } 900171: 900171: template 900171: constexpr bool __call_is_nt(__invoke_memfun_deref) 900171: { 900171: return noexcept(((*std::declval<_Tp>()).*std::declval<_Fn>())( 900171: std::declval<_Args>()...)); 900171: } 900171: 900171: template 900171: constexpr bool __call_is_nt(__invoke_memobj_ref) 900171: { 900171: using _Up = typename __inv_unwrap<_Tp>::type; 900171: return noexcept(std::declval<_Up>().*std::declval<_Fn>()); 900171: } 900171: 900171: template 900171: constexpr bool __call_is_nt(__invoke_memobj_deref) 900171: { 900171: return noexcept((*std::declval<_Tp>()).*std::declval<_Fn>()); 900171: } 900171: 900171: template 900171: constexpr bool __call_is_nt(__invoke_other) 900171: { 900171: return noexcept(std::declval<_Fn>()(std::declval<_Args>()...)); 900171: } 900171: 900171: template 900171: struct __call_is_nothrow 900171: : __bool_constant< 900171: std::__call_is_nt<_Fn, _Args...>(typename _Result::__invoke_type{}) 900171: > 900171: { }; 900171: 900171: template 900171: using __call_is_nothrow_ 900171: = __call_is_nothrow<__invoke_result<_Fn, _Args...>, _Fn, _Args...>; 900171: 900171: 900171: template 900171: struct __is_nothrow_invocable 900171: : __and_<__is_invocable<_Fn, _Args...>, 900171: __call_is_nothrow_<_Fn, _Args...>>::type 900171: { }; 900171: 900171: #pragma GCC diagnostic push 900171: #pragma GCC diagnostic ignored "-Wctor-dtor-privacy" 900171: struct __nonesuchbase {}; 900171: struct __nonesuch : private __nonesuchbase { 900171: ~__nonesuch() = delete; 900171: __nonesuch(__nonesuch const&) = delete; 900171: void operator=(__nonesuch const&) = delete; 900171: }; 900171: #pragma GCC diagnostic pop 900171: # 3703 "/usr/aarch64-linux-gnu/include/c++/12/type_traits" 3 900171: 900171: } 900171: # 61 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_pair.h" 2 3 900171: # 1 "/usr/aarch64-linux-gnu/include/c++/12/bits/move.h" 1 3 900171: # 38 "/usr/aarch64-linux-gnu/include/c++/12/bits/move.h" 3 900171: namespace std __attribute__ ((__visibility__ ("default"))) 900171: { 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: template 900171: inline constexpr _Tp* 900171: __addressof(_Tp& __r) noexcept 900171: { return __builtin_addressof(__r); } 900171: 900171: 900171: 900171: 900171: } 900171: 900171: 900171: 900171: namespace std __attribute__ ((__visibility__ ("default"))) 900171: { 900171: 900171: # 74 "/usr/aarch64-linux-gnu/include/c++/12/bits/move.h" 3 900171: template 900171: 900171: constexpr _Tp&& 900171: forward(typename std::remove_reference<_Tp>::type& __t) noexcept 900171: { return static_cast<_Tp&&>(__t); } 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: template 900171: 900171: constexpr _Tp&& 900171: forward(typename std::remove_reference<_Tp>::type&& __t) noexcept 900171: { 900171: static_assert(!std::is_lvalue_reference<_Tp>::value, 900171: "std::forward must not be used to convert an rvalue to an lvalue"); 900171: return static_cast<_Tp&&>(__t); 900171: } 900171: 900171: 900171: 900171: 900171: 900171: 900171: template 900171: 900171: constexpr typename std::remove_reference<_Tp>::type&& 900171: move(_Tp&& __t) noexcept 900171: { return static_cast::type&&>(__t); } 900171: 900171: 900171: template 900171: struct __move_if_noexcept_cond 900171: : public __and_<__not_>, 900171: is_copy_constructible<_Tp>>::type { }; 900171: # 121 "/usr/aarch64-linux-gnu/include/c++/12/bits/move.h" 3 900171: template 900171: 900171: constexpr 900171: __conditional_t<__move_if_noexcept_cond<_Tp>::value, const _Tp&, _Tp&&> 900171: move_if_noexcept(_Tp& __x) noexcept 900171: { return std::move(__x); } 900171: # 142 "/usr/aarch64-linux-gnu/include/c++/12/bits/move.h" 3 900171: template 900171: 900171: inline _Tp* 900171: addressof(_Tp& __r) noexcept 900171: { return std::__addressof(__r); } 900171: 900171: 900171: 900171: template 900171: const _Tp* addressof(const _Tp&&) = delete; 900171: 900171: 900171: template 900171: 900171: inline _Tp 900171: __exchange(_Tp& __obj, _Up&& __new_val) 900171: { 900171: _Tp __old_val = std::move(__obj); 900171: __obj = std::forward<_Up>(__new_val); 900171: return __old_val; 900171: } 900171: # 186 "/usr/aarch64-linux-gnu/include/c++/12/bits/move.h" 3 900171: template 900171: 900171: inline 900171: 900171: typename enable_if<__and_<__not_<__is_tuple_like<_Tp>>, 900171: is_move_constructible<_Tp>, 900171: is_move_assignable<_Tp>>::value>::type 900171: 900171: 900171: 900171: swap(_Tp& __a, _Tp& __b) 900171: noexcept(__and_, is_nothrow_move_assignable<_Tp>>::value) 900171: 900171: { 900171: 900171: 900171: 900171: 900171: _Tp __tmp = std::move(__a); 900171: __a = std::move(__b); 900171: __b = std::move(__tmp); 900171: } 900171: 900171: 900171: 900171: 900171: template 900171: 900171: inline 900171: 900171: typename enable_if<__is_swappable<_Tp>::value>::type 900171: 900171: 900171: 900171: swap(_Tp (&__a)[_Nm], _Tp (&__b)[_Nm]) 900171: noexcept(__is_nothrow_swappable<_Tp>::value) 900171: { 900171: for (size_t __n = 0; __n < _Nm; ++__n) 900171: swap(__a[__n], __b[__n]); 900171: } 900171: 900171: 900171: 900171: } 900171: # 62 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_pair.h" 2 3 900171: # 1 "/usr/aarch64-linux-gnu/include/c++/12/bits/utility.h" 1 3 900171: # 36 "/usr/aarch64-linux-gnu/include/c++/12/bits/utility.h" 3 900171: 900171: # 37 "/usr/aarch64-linux-gnu/include/c++/12/bits/utility.h" 3 900171: 900171: 900171: 900171: 900171: 900171: 900171: namespace std __attribute__ ((__visibility__ ("default"))) 900171: { 900171: 900171: 900171: 900171: template 900171: struct tuple_size; 900171: 900171: 900171: 900171: 900171: 900171: template::type, 900171: typename = typename enable_if::value>::type, 900171: size_t = tuple_size<_Tp>::value> 900171: using __enable_if_has_tuple_size = _Tp; 900171: 900171: template 900171: struct tuple_size> 900171: : public tuple_size<_Tp> { }; 900171: 900171: template 900171: struct tuple_size> 900171: : public tuple_size<_Tp> { }; 900171: 900171: template 900171: struct tuple_size> 900171: : public tuple_size<_Tp> { }; 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: template 900171: struct tuple_element; 900171: 900171: 900171: template 900171: using __tuple_element_t = typename tuple_element<__i, _Tp>::type; 900171: 900171: template 900171: struct tuple_element<__i, const _Tp> 900171: { 900171: typedef typename add_const<__tuple_element_t<__i, _Tp>>::type type; 900171: }; 900171: 900171: template 900171: struct tuple_element<__i, volatile _Tp> 900171: { 900171: typedef typename add_volatile<__tuple_element_t<__i, _Tp>>::type type; 900171: }; 900171: 900171: template 900171: struct tuple_element<__i, const volatile _Tp> 900171: { 900171: typedef typename add_cv<__tuple_element_t<__i, _Tp>>::type type; 900171: }; 900171: # 140 "/usr/aarch64-linux-gnu/include/c++/12/bits/utility.h" 3 900171: template struct _Index_tuple { }; 900171: 900171: 900171: template 900171: struct _Build_index_tuple 900171: { 900171: # 154 "/usr/aarch64-linux-gnu/include/c++/12/bits/utility.h" 3 900171: using __type = _Index_tuple<__integer_pack(_Num)...>; 900171: 900171: }; 900171: # 227 "/usr/aarch64-linux-gnu/include/c++/12/bits/utility.h" 3 900171: template 900171: struct _Nth_type 900171: { }; 900171: 900171: template 900171: struct _Nth_type<0, _Tp0, _Rest...> 900171: { using type = _Tp0; }; 900171: 900171: template 900171: struct _Nth_type<1, _Tp0, _Tp1, _Rest...> 900171: { using type = _Tp1; }; 900171: 900171: template 900171: struct _Nth_type<2, _Tp0, _Tp1, _Tp2, _Rest...> 900171: { using type = _Tp2; }; 900171: 900171: template 900171: 900171: 900171: 900171: struct _Nth_type<_Np, _Tp0, _Tp1, _Tp2, _Rest...> 900171: : _Nth_type<_Np - 3, _Rest...> 900171: { }; 900171: 900171: 900171: template 900171: struct _Nth_type<0, _Tp0, _Tp1, _Rest...> 900171: { using type = _Tp0; }; 900171: 900171: template 900171: struct _Nth_type<0, _Tp0, _Tp1, _Tp2, _Rest...> 900171: { using type = _Tp0; }; 900171: 900171: template 900171: struct _Nth_type<1, _Tp0, _Tp1, _Tp2, _Rest...> 900171: { using type = _Tp1; }; 900171: 900171: 900171: 900171: } 900171: # 63 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_pair.h" 2 3 900171: 900171: 900171: 900171: 900171: 900171: 900171: namespace std __attribute__ ((__visibility__ ("default"))) 900171: { 900171: 900171: # 80 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_pair.h" 3 900171: struct piecewise_construct_t { explicit piecewise_construct_t() = default; }; 900171: 900171: 900171: constexpr piecewise_construct_t piecewise_construct = 900171: piecewise_construct_t(); 900171: 900171: 900171: 900171: 900171: template 900171: class tuple; 900171: 900171: template 900171: struct _Index_tuple; 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: template 900171: struct _PCC 900171: { 900171: template 900171: static constexpr bool _ConstructiblePair() 900171: { 900171: return __and_, 900171: is_constructible<_T2, const _U2&>>::value; 900171: } 900171: 900171: template 900171: static constexpr bool _ImplicitlyConvertiblePair() 900171: { 900171: return __and_, 900171: is_convertible>::value; 900171: } 900171: 900171: template 900171: static constexpr bool _MoveConstructiblePair() 900171: { 900171: return __and_, 900171: is_constructible<_T2, _U2&&>>::value; 900171: } 900171: 900171: template 900171: static constexpr bool _ImplicitlyMoveConvertiblePair() 900171: { 900171: return __and_, 900171: is_convertible<_U2&&, _T2>>::value; 900171: } 900171: }; 900171: 900171: template 900171: struct _PCC 900171: { 900171: template 900171: static constexpr bool _ConstructiblePair() 900171: { 900171: return false; 900171: } 900171: 900171: template 900171: static constexpr bool _ImplicitlyConvertiblePair() 900171: { 900171: return false; 900171: } 900171: 900171: template 900171: static constexpr bool _MoveConstructiblePair() 900171: { 900171: return false; 900171: } 900171: 900171: template 900171: static constexpr bool _ImplicitlyMoveConvertiblePair() 900171: { 900171: return false; 900171: } 900171: }; 900171: 900171: 900171: 900171: template class __pair_base 900171: { 900171: 900171: template friend struct pair; 900171: __pair_base() = default; 900171: ~__pair_base() = default; 900171: __pair_base(const __pair_base&) = default; 900171: __pair_base& operator=(const __pair_base&) = delete; 900171: 900171: }; 900171: # 184 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_pair.h" 3 900171: template 900171: struct pair 900171: : public __pair_base<_T1, _T2> 900171: { 900171: typedef _T1 first_type; 900171: typedef _T2 second_type; 900171: 900171: _T1 first; 900171: _T2 second; 900171: 900171: 900171: constexpr pair(const pair&) = default; 900171: constexpr pair(pair&&) = default; 900171: 900171: template 900171: 900171: pair(piecewise_construct_t, tuple<_Args1...>, tuple<_Args2...>); 900171: 900171: 900171: void 900171: swap(pair& __p) 900171: noexcept(__and_<__is_nothrow_swappable<_T1>, 900171: __is_nothrow_swappable<_T2>>::value) 900171: { 900171: using std::swap; 900171: swap(first, __p.first); 900171: swap(second, __p.second); 900171: } 900171: 900171: private: 900171: template 900171: 900171: pair(tuple<_Args1...>&, tuple<_Args2...>&, 900171: _Index_tuple<_Indexes1...>, _Index_tuple<_Indexes2...>); 900171: public: 900171: # 378 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_pair.h" 3 900171: template , 900171: __is_implicitly_default_constructible<_U2>> 900171: ::value, bool>::type = true> 900171: constexpr pair() 900171: : first(), second() { } 900171: 900171: template , 900171: is_default_constructible<_U2>, 900171: __not_< 900171: __and_<__is_implicitly_default_constructible<_U1>, 900171: __is_implicitly_default_constructible<_U2>>>> 900171: ::value, bool>::type = false> 900171: explicit constexpr pair() 900171: : first(), second() { } 900171: 900171: 900171: 900171: using _PCCP = _PCC; 900171: 900171: 900171: 900171: template() 900171: && _PCCP::template 900171: _ImplicitlyConvertiblePair<_U1, _U2>(), 900171: bool>::type=true> 900171: constexpr pair(const _T1& __a, const _T2& __b) 900171: : first(__a), second(__b) { } 900171: 900171: 900171: template() 900171: && !_PCCP::template 900171: _ImplicitlyConvertiblePair<_U1, _U2>(), 900171: bool>::type=false> 900171: explicit constexpr pair(const _T1& __a, const _T2& __b) 900171: : first(__a), second(__b) { } 900171: 900171: 900171: 900171: template 900171: using _PCCFP = _PCC::value 900171: || !is_same<_T2, _U2>::value, 900171: _T1, _T2>; 900171: 900171: 900171: template::template 900171: _ConstructiblePair<_U1, _U2>() 900171: && _PCCFP<_U1, _U2>::template 900171: _ImplicitlyConvertiblePair<_U1, _U2>(), 900171: bool>::type=true> 900171: constexpr pair(const pair<_U1, _U2>& __p) 900171: : first(__p.first), second(__p.second) { } 900171: 900171: template::template 900171: _ConstructiblePair<_U1, _U2>() 900171: && !_PCCFP<_U1, _U2>::template 900171: _ImplicitlyConvertiblePair<_U1, _U2>(), 900171: bool>::type=false> 900171: explicit constexpr pair(const pair<_U1, _U2>& __p) 900171: : first(__p.first), second(__p.second) { } 900171: # 460 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_pair.h" 3 900171: private: 900171: 900171: 900171: 900171: struct __zero_as_null_pointer_constant 900171: { 900171: __zero_as_null_pointer_constant(int __zero_as_null_pointer_constant::*) 900171: { } 900171: template::value>> 900171: __zero_as_null_pointer_constant(_Tp) = delete; 900171: }; 900171: 900171: public: 900171: 900171: 900171: 900171: 900171: template>, 900171: is_pointer<_T2>, 900171: is_constructible<_T1, _U1>, 900171: __not_>, 900171: is_convertible<_U1, _T1>>::value, 900171: bool> = true> 900171: __attribute__ ((__deprecated__ ("use 'nullptr' instead of '0' to " "initialize std::pair of move-only " "type and pointer"))) 900171: constexpr 900171: pair(_U1&& __x, __zero_as_null_pointer_constant, ...) 900171: : first(std::forward<_U1>(__x)), second(nullptr) { } 900171: 900171: template>, 900171: is_pointer<_T2>, 900171: is_constructible<_T1, _U1>, 900171: __not_>, 900171: __not_>>::value, 900171: bool> = false> 900171: __attribute__ ((__deprecated__ ("use 'nullptr' instead of '0' to " "initialize std::pair of move-only " "type and pointer"))) 900171: explicit constexpr 900171: pair(_U1&& __x, __zero_as_null_pointer_constant, ...) 900171: : first(std::forward<_U1>(__x)), second(nullptr) { } 900171: 900171: template, 900171: __not_>, 900171: is_constructible<_T2, _U2>, 900171: __not_>, 900171: is_convertible<_U2, _T2>>::value, 900171: bool> = true> 900171: __attribute__ ((__deprecated__ ("use 'nullptr' instead of '0' to " "initialize std::pair of move-only " "type and pointer"))) 900171: constexpr 900171: pair(__zero_as_null_pointer_constant, _U2&& __y, ...) 900171: : first(nullptr), second(std::forward<_U2>(__y)) { } 900171: 900171: template, 900171: __not_>, 900171: is_constructible<_T2, _U2>, 900171: __not_>, 900171: __not_>>::value, 900171: bool> = false> 900171: __attribute__ ((__deprecated__ ("use 'nullptr' instead of '0' to " "initialize std::pair of move-only " "type and pointer"))) 900171: explicit constexpr 900171: pair(__zero_as_null_pointer_constant, _U2&& __y, ...) 900171: : first(nullptr), second(std::forward<_U2>(__y)) { } 900171: 900171: 900171: 900171: template() 900171: && _PCCP::template 900171: _ImplicitlyMoveConvertiblePair<_U1, _U2>(), 900171: bool>::type=true> 900171: constexpr pair(_U1&& __x, _U2&& __y) 900171: : first(std::forward<_U1>(__x)), second(std::forward<_U2>(__y)) { } 900171: 900171: template() 900171: && !_PCCP::template 900171: _ImplicitlyMoveConvertiblePair<_U1, _U2>(), 900171: bool>::type=false> 900171: explicit constexpr pair(_U1&& __x, _U2&& __y) 900171: : first(std::forward<_U1>(__x)), second(std::forward<_U2>(__y)) { } 900171: 900171: 900171: template::template 900171: _MoveConstructiblePair<_U1, _U2>() 900171: && _PCCFP<_U1, _U2>::template 900171: _ImplicitlyMoveConvertiblePair<_U1, _U2>(), 900171: bool>::type=true> 900171: constexpr pair(pair<_U1, _U2>&& __p) 900171: : first(std::forward<_U1>(__p.first)), 900171: second(std::forward<_U2>(__p.second)) { } 900171: 900171: template::template 900171: _MoveConstructiblePair<_U1, _U2>() 900171: && !_PCCFP<_U1, _U2>::template 900171: _ImplicitlyMoveConvertiblePair<_U1, _U2>(), 900171: bool>::type=false> 900171: explicit constexpr pair(pair<_U1, _U2>&& __p) 900171: : first(std::forward<_U1>(__p.first)), 900171: second(std::forward<_U2>(__p.second)) { } 900171: 900171: pair& 900171: operator=(__conditional_t<__and_, 900171: is_copy_assignable<_T2>>::value, 900171: const pair&, const __nonesuch&> __p) 900171: { 900171: first = __p.first; 900171: second = __p.second; 900171: return *this; 900171: } 900171: 900171: pair& 900171: operator=(__conditional_t<__and_, 900171: is_move_assignable<_T2>>::value, 900171: pair&&, __nonesuch&&> __p) 900171: noexcept(__and_, 900171: is_nothrow_move_assignable<_T2>>::value) 900171: { 900171: first = std::forward(__p.first); 900171: second = std::forward(__p.second); 900171: return *this; 900171: } 900171: 900171: template 900171: typename enable_if<__and_, 900171: is_assignable<_T2&, const _U2&>>::value, 900171: pair&>::type 900171: operator=(const pair<_U1, _U2>& __p) 900171: { 900171: first = __p.first; 900171: second = __p.second; 900171: return *this; 900171: } 900171: 900171: template 900171: typename enable_if<__and_, 900171: is_assignable<_T2&, _U2&&>>::value, 900171: pair&>::type 900171: operator=(pair<_U1, _U2>&& __p) 900171: { 900171: first = std::forward<_U1>(__p.first); 900171: second = std::forward<_U2>(__p.second); 900171: return *this; 900171: } 900171: # 629 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_pair.h" 3 900171: }; 900171: # 638 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_pair.h" 3 900171: template 900171: inline constexpr bool 900171: operator==(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) 900171: { return __x.first == __y.first && __x.second == __y.second; } 900171: # 661 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_pair.h" 3 900171: template 900171: inline constexpr bool 900171: operator<(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) 900171: { return __x.first < __y.first 900171: || (!(__y.first < __x.first) && __x.second < __y.second); } 900171: 900171: 900171: template 900171: inline constexpr bool 900171: operator!=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) 900171: { return !(__x == __y); } 900171: 900171: 900171: template 900171: inline constexpr bool 900171: operator>(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) 900171: { return __y < __x; } 900171: 900171: 900171: template 900171: inline constexpr bool 900171: operator<=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) 900171: { return !(__y < __x); } 900171: 900171: 900171: template 900171: inline constexpr bool 900171: operator>=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) 900171: { return !(__x < __y); } 900171: # 698 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_pair.h" 3 900171: template 900171: inline 900171: 900171: 900171: 900171: 900171: 900171: void 900171: 900171: swap(pair<_T1, _T2>& __x, pair<_T1, _T2>& __y) 900171: noexcept(noexcept(__x.swap(__y))) 900171: { __x.swap(__y); } 900171: # 738 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_pair.h" 3 900171: template 900171: constexpr pair::__type, 900171: typename __decay_and_strip<_T2>::__type> 900171: make_pair(_T1&& __x, _T2&& __y) 900171: { 900171: typedef typename __decay_and_strip<_T1>::__type __ds_type1; 900171: typedef typename __decay_and_strip<_T2>::__type __ds_type2; 900171: typedef pair<__ds_type1, __ds_type2> __pair_type; 900171: return __pair_type(std::forward<_T1>(__x), std::forward<_T2>(__y)); 900171: } 900171: # 760 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_pair.h" 3 900171: template 900171: struct __is_tuple_like_impl> : true_type 900171: { }; 900171: 900171: 900171: template 900171: struct tuple_size> 900171: : public integral_constant { }; 900171: 900171: 900171: template 900171: struct tuple_element<0, pair<_Tp1, _Tp2>> 900171: { typedef _Tp1 type; }; 900171: 900171: 900171: template 900171: struct tuple_element<1, pair<_Tp1, _Tp2>> 900171: { typedef _Tp2 type; }; 900171: # 797 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_pair.h" 3 900171: template 900171: struct __pair_get; 900171: 900171: template<> 900171: struct __pair_get<0> 900171: { 900171: template 900171: static constexpr _Tp1& 900171: __get(pair<_Tp1, _Tp2>& __pair) noexcept 900171: { return __pair.first; } 900171: 900171: template 900171: static constexpr _Tp1&& 900171: __move_get(pair<_Tp1, _Tp2>&& __pair) noexcept 900171: { return std::forward<_Tp1>(__pair.first); } 900171: 900171: template 900171: static constexpr const _Tp1& 900171: __const_get(const pair<_Tp1, _Tp2>& __pair) noexcept 900171: { return __pair.first; } 900171: 900171: template 900171: static constexpr const _Tp1&& 900171: __const_move_get(const pair<_Tp1, _Tp2>&& __pair) noexcept 900171: { return std::forward(__pair.first); } 900171: }; 900171: 900171: template<> 900171: struct __pair_get<1> 900171: { 900171: template 900171: static constexpr _Tp2& 900171: __get(pair<_Tp1, _Tp2>& __pair) noexcept 900171: { return __pair.second; } 900171: 900171: template 900171: static constexpr _Tp2&& 900171: __move_get(pair<_Tp1, _Tp2>&& __pair) noexcept 900171: { return std::forward<_Tp2>(__pair.second); } 900171: 900171: template 900171: static constexpr const _Tp2& 900171: __const_get(const pair<_Tp1, _Tp2>& __pair) noexcept 900171: { return __pair.second; } 900171: 900171: template 900171: static constexpr const _Tp2&& 900171: __const_move_get(const pair<_Tp1, _Tp2>&& __pair) noexcept 900171: { return std::forward(__pair.second); } 900171: }; 900171: 900171: 900171: 900171: 900171: 900171: 900171: template 900171: constexpr typename tuple_element<_Int, pair<_Tp1, _Tp2>>::type& 900171: get(pair<_Tp1, _Tp2>& __in) noexcept 900171: { return __pair_get<_Int>::__get(__in); } 900171: 900171: template 900171: constexpr typename tuple_element<_Int, pair<_Tp1, _Tp2>>::type&& 900171: get(pair<_Tp1, _Tp2>&& __in) noexcept 900171: { return __pair_get<_Int>::__move_get(std::move(__in)); } 900171: 900171: template 900171: constexpr const typename tuple_element<_Int, pair<_Tp1, _Tp2>>::type& 900171: get(const pair<_Tp1, _Tp2>& __in) noexcept 900171: { return __pair_get<_Int>::__const_get(__in); } 900171: 900171: template 900171: constexpr const typename tuple_element<_Int, pair<_Tp1, _Tp2>>::type&& 900171: get(const pair<_Tp1, _Tp2>&& __in) noexcept 900171: { return __pair_get<_Int>::__const_move_get(std::move(__in)); } 900171: # 921 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_pair.h" 3 900171: 900171: } 900171: # 65 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algobase.h" 2 3 900171: # 1 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_iterator_base_types.h" 1 3 900171: # 62 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_iterator_base_types.h" 3 900171: 900171: # 63 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_iterator_base_types.h" 3 900171: # 74 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_iterator_base_types.h" 3 900171: namespace std __attribute__ ((__visibility__ ("default"))) 900171: { 900171: 900171: # 93 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_iterator_base_types.h" 3 900171: struct input_iterator_tag { }; 900171: 900171: 900171: struct output_iterator_tag { }; 900171: 900171: 900171: struct forward_iterator_tag : public input_iterator_tag { }; 900171: 900171: 900171: 900171: struct bidirectional_iterator_tag : public forward_iterator_tag { }; 900171: 900171: 900171: 900171: struct random_access_iterator_tag : public bidirectional_iterator_tag { }; 900171: # 125 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_iterator_base_types.h" 3 900171: template 900171: struct iterator 900171: { 900171: 900171: typedef _Category iterator_category; 900171: 900171: typedef _Tp value_type; 900171: 900171: typedef _Distance difference_type; 900171: 900171: typedef _Pointer pointer; 900171: 900171: typedef _Reference reference; 900171: }; 900171: # 149 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_iterator_base_types.h" 3 900171: template 900171: struct iterator_traits; 900171: 900171: 900171: 900171: 900171: template> 900171: struct __iterator_traits { }; 900171: 900171: 900171: 900171: template 900171: struct __iterator_traits<_Iterator, 900171: __void_t> 900171: { 900171: typedef typename _Iterator::iterator_category iterator_category; 900171: typedef typename _Iterator::value_type value_type; 900171: typedef typename _Iterator::difference_type difference_type; 900171: typedef typename _Iterator::pointer pointer; 900171: typedef typename _Iterator::reference reference; 900171: }; 900171: 900171: 900171: template 900171: struct iterator_traits 900171: : public __iterator_traits<_Iterator> { }; 900171: # 209 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_iterator_base_types.h" 3 900171: template 900171: struct iterator_traits<_Tp*> 900171: { 900171: typedef random_access_iterator_tag iterator_category; 900171: typedef _Tp value_type; 900171: typedef ptrdiff_t difference_type; 900171: typedef _Tp* pointer; 900171: typedef _Tp& reference; 900171: }; 900171: 900171: 900171: template 900171: struct iterator_traits 900171: { 900171: typedef random_access_iterator_tag iterator_category; 900171: typedef _Tp value_type; 900171: typedef ptrdiff_t difference_type; 900171: typedef const _Tp* pointer; 900171: typedef const _Tp& reference; 900171: }; 900171: 900171: 900171: 900171: 900171: 900171: 900171: template 900171: inline constexpr 900171: typename iterator_traits<_Iter>::iterator_category 900171: __iterator_category(const _Iter&) 900171: { return typename iterator_traits<_Iter>::iterator_category(); } 900171: 900171: 900171: 900171: 900171: template 900171: using __iterator_category_t 900171: = typename iterator_traits<_Iter>::iterator_category; 900171: 900171: template 900171: using _RequireInputIter = 900171: __enable_if_t, 900171: input_iterator_tag>::value>; 900171: 900171: template> 900171: struct __is_random_access_iter 900171: : is_base_of 900171: { 900171: typedef is_base_of _Base; 900171: enum { __value = _Base::value }; 900171: }; 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: } 900171: # 66 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algobase.h" 2 3 900171: # 1 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_iterator_base_funcs.h" 1 3 900171: # 62 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_iterator_base_funcs.h" 3 900171: 900171: # 63 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_iterator_base_funcs.h" 3 900171: 900171: # 1 "/usr/aarch64-linux-gnu/include/c++/12/bits/concept_check.h" 1 3 900171: # 33 "/usr/aarch64-linux-gnu/include/c++/12/bits/concept_check.h" 3 900171: 900171: # 34 "/usr/aarch64-linux-gnu/include/c++/12/bits/concept_check.h" 3 900171: # 65 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_iterator_base_funcs.h" 2 3 900171: # 1 "/usr/aarch64-linux-gnu/include/c++/12/debug/assertions.h" 1 3 900171: # 66 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_iterator_base_funcs.h" 2 3 900171: 900171: 900171: namespace std __attribute__ ((__visibility__ ("default"))) 900171: { 900171: 900171: 900171: 900171: 900171: template struct _List_iterator; 900171: template struct _List_const_iterator; 900171: 900171: 900171: template 900171: inline 900171: typename iterator_traits<_InputIterator>::difference_type 900171: __distance(_InputIterator __first, _InputIterator __last, 900171: input_iterator_tag) 900171: { 900171: 900171: 900171: 900171: typename iterator_traits<_InputIterator>::difference_type __n = 0; 900171: while (__first != __last) 900171: { 900171: ++__first; 900171: ++__n; 900171: } 900171: return __n; 900171: } 900171: 900171: template 900171: inline 900171: typename iterator_traits<_RandomAccessIterator>::difference_type 900171: __distance(_RandomAccessIterator __first, _RandomAccessIterator __last, 900171: random_access_iterator_tag) 900171: { 900171: 900171: 900171: 900171: return __last - __first; 900171: } 900171: 900171: 900171: 900171: template 900171: ptrdiff_t 900171: __distance(std::_List_iterator<_Tp>, 900171: std::_List_iterator<_Tp>, 900171: input_iterator_tag); 900171: 900171: template 900171: ptrdiff_t 900171: __distance(std::_List_const_iterator<_Tp>, 900171: std::_List_const_iterator<_Tp>, 900171: input_iterator_tag); 900171: 900171: 900171: 900171: 900171: template 900171: void 900171: __distance(_OutputIterator, _OutputIterator, output_iterator_tag) = delete; 900171: # 143 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_iterator_base_funcs.h" 3 900171: template 900171: 900171: inline 900171: typename iterator_traits<_InputIterator>::difference_type 900171: distance(_InputIterator __first, _InputIterator __last) 900171: { 900171: 900171: return std::__distance(__first, __last, 900171: std::__iterator_category(__first)); 900171: } 900171: 900171: template 900171: inline void 900171: __advance(_InputIterator& __i, _Distance __n, input_iterator_tag) 900171: { 900171: 900171: 900171: do { if (std::__is_constant_evaluated() && !bool(__n >= 0)) __builtin_unreachable(); } while (false); 900171: while (__n--) 900171: ++__i; 900171: } 900171: 900171: template 900171: inline void 900171: __advance(_BidirectionalIterator& __i, _Distance __n, 900171: bidirectional_iterator_tag) 900171: { 900171: 900171: 900171: 900171: if (__n > 0) 900171: while (__n--) 900171: ++__i; 900171: else 900171: while (__n++) 900171: --__i; 900171: } 900171: 900171: template 900171: inline void 900171: __advance(_RandomAccessIterator& __i, _Distance __n, 900171: random_access_iterator_tag) 900171: { 900171: 900171: 900171: 900171: if (__builtin_constant_p(__n) && __n == 1) 900171: ++__i; 900171: else if (__builtin_constant_p(__n) && __n == -1) 900171: --__i; 900171: else 900171: __i += __n; 900171: } 900171: 900171: 900171: 900171: template 900171: void 900171: __advance(_OutputIterator&, _Distance, output_iterator_tag) = delete; 900171: # 216 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_iterator_base_funcs.h" 3 900171: template 900171: inline void 900171: advance(_InputIterator& __i, _Distance __n) 900171: { 900171: 900171: typename iterator_traits<_InputIterator>::difference_type __d = __n; 900171: std::__advance(__i, __d, std::__iterator_category(__i)); 900171: } 900171: 900171: 900171: 900171: template 900171: 900171: inline _InputIterator 900171: next(_InputIterator __x, typename 900171: iterator_traits<_InputIterator>::difference_type __n = 1) 900171: { 900171: 900171: 900171: std::advance(__x, __n); 900171: return __x; 900171: } 900171: 900171: template 900171: 900171: inline _BidirectionalIterator 900171: prev(_BidirectionalIterator __x, typename 900171: iterator_traits<_BidirectionalIterator>::difference_type __n = 1) 900171: { 900171: 900171: 900171: 900171: std::advance(__x, -__n); 900171: return __x; 900171: } 900171: 900171: 900171: 900171: 900171: } 900171: # 67 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algobase.h" 2 3 900171: # 1 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_iterator.h" 1 3 900171: # 67 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_iterator.h" 3 900171: # 1 "/usr/aarch64-linux-gnu/include/c++/12/bits/ptr_traits.h" 1 3 900171: # 46 "/usr/aarch64-linux-gnu/include/c++/12/bits/ptr_traits.h" 3 900171: namespace std __attribute__ ((__visibility__ ("default"))) 900171: { 900171: 900171: 900171: class __undefined; 900171: 900171: 900171: 900171: template 900171: struct __get_first_arg 900171: { using type = __undefined; }; 900171: 900171: template class _SomeTemplate, typename _Tp, 900171: typename... _Types> 900171: struct __get_first_arg<_SomeTemplate<_Tp, _Types...>> 900171: { using type = _Tp; }; 900171: 900171: 900171: 900171: template 900171: struct __replace_first_arg 900171: { }; 900171: 900171: template class _SomeTemplate, typename _Up, 900171: typename _Tp, typename... _Types> 900171: struct __replace_first_arg<_SomeTemplate<_Tp, _Types...>, _Up> 900171: { using type = _SomeTemplate<_Up, _Types...>; }; 900171: # 81 "/usr/aarch64-linux-gnu/include/c++/12/bits/ptr_traits.h" 3 900171: template 900171: struct __ptr_traits_elem : __get_first_arg<_Ptr> 900171: { }; 900171: 900171: 900171: template 900171: struct __ptr_traits_elem<_Ptr, __void_t> 900171: { using type = typename _Ptr::element_type; }; 900171: 900171: template 900171: using __ptr_traits_elem_t = typename __ptr_traits_elem<_Ptr>::type; 900171: 900171: 900171: 900171: template::value> 900171: struct __ptr_traits_ptr_to 900171: { 900171: using pointer = _Ptr; 900171: using element_type = _Elt; 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: static pointer 900171: pointer_to(element_type& __e) 900171: 900171: 900171: 900171: 900171: 900171: { return pointer::pointer_to(__e); } 900171: }; 900171: 900171: 900171: template 900171: struct __ptr_traits_ptr_to<_Ptr, _Elt, true> 900171: { }; 900171: 900171: 900171: template 900171: struct __ptr_traits_ptr_to<_Tp*, _Tp, false> 900171: { 900171: using pointer = _Tp*; 900171: using element_type = _Tp; 900171: 900171: 900171: 900171: 900171: 900171: 900171: static pointer 900171: pointer_to(element_type& __r) noexcept 900171: { return std::addressof(__r); } 900171: }; 900171: 900171: template 900171: struct __ptr_traits_impl : __ptr_traits_ptr_to<_Ptr, _Elt> 900171: { 900171: private: 900171: template 900171: struct __difference { using type = ptrdiff_t; }; 900171: 900171: template 900171: 900171: 900171: 900171: 900171: struct __difference<_Tp, __void_t> 900171: 900171: { using type = typename _Tp::difference_type; }; 900171: 900171: template 900171: struct __rebind : __replace_first_arg<_Tp, _Up> { }; 900171: 900171: template 900171: 900171: 900171: 900171: 900171: struct __rebind<_Tp, _Up, __void_t>> 900171: 900171: { using type = typename _Tp::template rebind<_Up>; }; 900171: 900171: public: 900171: 900171: using pointer = _Ptr; 900171: 900171: 900171: using element_type = _Elt; 900171: 900171: 900171: using difference_type = typename __difference<_Ptr>::type; 900171: 900171: 900171: template 900171: using rebind = typename __rebind<_Ptr, _Up>::type; 900171: }; 900171: 900171: 900171: 900171: template 900171: struct __ptr_traits_impl<_Ptr, __undefined> 900171: { }; 900171: 900171: 900171: 900171: 900171: 900171: 900171: template 900171: struct pointer_traits : __ptr_traits_impl<_Ptr, __ptr_traits_elem_t<_Ptr>> 900171: { }; 900171: # 209 "/usr/aarch64-linux-gnu/include/c++/12/bits/ptr_traits.h" 3 900171: template 900171: struct pointer_traits<_Tp*> : __ptr_traits_ptr_to<_Tp*, _Tp> 900171: { 900171: 900171: typedef _Tp* pointer; 900171: 900171: typedef _Tp element_type; 900171: 900171: typedef ptrdiff_t difference_type; 900171: 900171: template using rebind = _Up*; 900171: }; 900171: 900171: 900171: template 900171: using __ptr_rebind = typename pointer_traits<_Ptr>::template rebind<_Tp>; 900171: 900171: template 900171: constexpr _Tp* 900171: __to_address(_Tp* __ptr) noexcept 900171: { 900171: static_assert(!std::is_function<_Tp>::value, "not a function pointer"); 900171: return __ptr; 900171: } 900171: 900171: 900171: template 900171: constexpr typename std::pointer_traits<_Ptr>::element_type* 900171: __to_address(const _Ptr& __ptr) 900171: { return std::__to_address(__ptr.operator->()); } 900171: # 282 "/usr/aarch64-linux-gnu/include/c++/12/bits/ptr_traits.h" 3 900171: 900171: } 900171: # 68 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_iterator.h" 2 3 900171: # 88 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_iterator.h" 3 900171: namespace std __attribute__ ((__visibility__ ("default"))) 900171: { 900171: 900171: # 109 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_iterator.h" 3 900171: #pragma GCC diagnostic push 900171: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 900171: # 131 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_iterator.h" 3 900171: template 900171: class reverse_iterator 900171: : public iterator::iterator_category, 900171: typename iterator_traits<_Iterator>::value_type, 900171: typename iterator_traits<_Iterator>::difference_type, 900171: typename iterator_traits<_Iterator>::pointer, 900171: typename iterator_traits<_Iterator>::reference> 900171: { 900171: template 900171: friend class reverse_iterator; 900171: # 150 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_iterator.h" 3 900171: protected: 900171: _Iterator current; 900171: 900171: typedef iterator_traits<_Iterator> __traits_type; 900171: 900171: public: 900171: typedef _Iterator iterator_type; 900171: typedef typename __traits_type::pointer pointer; 900171: 900171: typedef typename __traits_type::difference_type difference_type; 900171: typedef typename __traits_type::reference reference; 900171: # 181 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_iterator.h" 3 900171: 900171: reverse_iterator() 900171: noexcept(noexcept(_Iterator())) 900171: : current() 900171: { } 900171: 900171: 900171: 900171: 900171: explicit 900171: reverse_iterator(iterator_type __x) 900171: noexcept(noexcept(_Iterator(__x))) 900171: : current(__x) 900171: { } 900171: 900171: 900171: 900171: 900171: 900171: reverse_iterator(const reverse_iterator& __x) 900171: noexcept(noexcept(_Iterator(__x.current))) 900171: : current(__x.current) 900171: { } 900171: 900171: 900171: reverse_iterator& operator=(const reverse_iterator&) = default; 900171: 900171: 900171: 900171: 900171: 900171: 900171: template 900171: 900171: 900171: 900171: 900171: reverse_iterator(const reverse_iterator<_Iter>& __x) 900171: noexcept(noexcept(_Iterator(__x.current))) 900171: : current(__x.current) 900171: { } 900171: 900171: 900171: template 900171: 900171: 900171: 900171: 900171: 900171: reverse_iterator& 900171: operator=(const reverse_iterator<_Iter>& __x) 900171: noexcept(noexcept(current = __x.current)) 900171: { 900171: current = __x.current; 900171: return *this; 900171: } 900171: 900171: 900171: 900171: 900171: 900171: 900171: iterator_type 900171: base() const 900171: noexcept(noexcept(_Iterator(current))) 900171: { return current; } 900171: # 258 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_iterator.h" 3 900171: 900171: reference 900171: operator*() const 900171: { 900171: _Iterator __tmp = current; 900171: return *--__tmp; 900171: } 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: pointer 900171: operator->() const 900171: 900171: 900171: 900171: 900171: { 900171: 900171: 900171: _Iterator __tmp = current; 900171: --__tmp; 900171: return _S_to_pointer(__tmp); 900171: } 900171: 900171: 900171: 900171: 900171: 900171: 900171: reverse_iterator& 900171: operator++() 900171: { 900171: --current; 900171: return *this; 900171: } 900171: 900171: 900171: 900171: 900171: 900171: 900171: reverse_iterator 900171: operator++(int) 900171: { 900171: reverse_iterator __tmp = *this; 900171: --current; 900171: return __tmp; 900171: } 900171: 900171: 900171: 900171: 900171: 900171: 900171: reverse_iterator& 900171: operator--() 900171: { 900171: ++current; 900171: return *this; 900171: } 900171: 900171: 900171: 900171: 900171: 900171: 900171: reverse_iterator 900171: operator--(int) 900171: { 900171: reverse_iterator __tmp = *this; 900171: ++current; 900171: return __tmp; 900171: } 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: reverse_iterator 900171: operator+(difference_type __n) const 900171: { return reverse_iterator(current - __n); } 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: reverse_iterator& 900171: operator+=(difference_type __n) 900171: { 900171: current -= __n; 900171: return *this; 900171: } 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: reverse_iterator 900171: operator-(difference_type __n) const 900171: { return reverse_iterator(current + __n); } 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: reverse_iterator& 900171: operator-=(difference_type __n) 900171: { 900171: current += __n; 900171: return *this; 900171: } 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: reference 900171: operator[](difference_type __n) const 900171: { return *(*this + __n); } 900171: # 418 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_iterator.h" 3 900171: private: 900171: template 900171: static _Tp* 900171: _S_to_pointer(_Tp* __p) 900171: { return __p; } 900171: 900171: template 900171: static pointer 900171: _S_to_pointer(_Tp __t) 900171: { return __t.operator->(); } 900171: }; 900171: # 441 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_iterator.h" 3 900171: template 900171: 900171: inline bool 900171: operator==(const reverse_iterator<_Iterator>& __x, 900171: const reverse_iterator<_Iterator>& __y) 900171: { return __x.base() == __y.base(); } 900171: 900171: template 900171: 900171: inline bool 900171: operator<(const reverse_iterator<_Iterator>& __x, 900171: const reverse_iterator<_Iterator>& __y) 900171: { return __y.base() < __x.base(); } 900171: 900171: template 900171: 900171: inline bool 900171: operator!=(const reverse_iterator<_Iterator>& __x, 900171: const reverse_iterator<_Iterator>& __y) 900171: { return !(__x == __y); } 900171: 900171: template 900171: 900171: inline bool 900171: operator>(const reverse_iterator<_Iterator>& __x, 900171: const reverse_iterator<_Iterator>& __y) 900171: { return __y < __x; } 900171: 900171: template 900171: 900171: inline bool 900171: operator<=(const reverse_iterator<_Iterator>& __x, 900171: const reverse_iterator<_Iterator>& __y) 900171: { return !(__y < __x); } 900171: 900171: template 900171: 900171: inline bool 900171: operator>=(const reverse_iterator<_Iterator>& __x, 900171: const reverse_iterator<_Iterator>& __y) 900171: { return !(__x < __y); } 900171: 900171: 900171: 900171: 900171: template 900171: 900171: inline bool 900171: operator==(const reverse_iterator<_IteratorL>& __x, 900171: const reverse_iterator<_IteratorR>& __y) 900171: { return __x.base() == __y.base(); } 900171: 900171: template 900171: 900171: inline bool 900171: operator<(const reverse_iterator<_IteratorL>& __x, 900171: const reverse_iterator<_IteratorR>& __y) 900171: { return __x.base() > __y.base(); } 900171: 900171: template 900171: 900171: inline bool 900171: operator!=(const reverse_iterator<_IteratorL>& __x, 900171: const reverse_iterator<_IteratorR>& __y) 900171: { return __x.base() != __y.base(); } 900171: 900171: template 900171: 900171: inline bool 900171: operator>(const reverse_iterator<_IteratorL>& __x, 900171: const reverse_iterator<_IteratorR>& __y) 900171: { return __x.base() < __y.base(); } 900171: 900171: template 900171: inline bool 900171: operator<=(const reverse_iterator<_IteratorL>& __x, 900171: const reverse_iterator<_IteratorR>& __y) 900171: { return __x.base() >= __y.base(); } 900171: 900171: template 900171: 900171: inline bool 900171: operator>=(const reverse_iterator<_IteratorL>& __x, 900171: const reverse_iterator<_IteratorR>& __y) 900171: { return __x.base() <= __y.base(); } 900171: # 618 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_iterator.h" 3 900171: template 900171: [[__nodiscard__]] 900171: inline auto 900171: operator-(const reverse_iterator<_IteratorL>& __x, 900171: const reverse_iterator<_IteratorR>& __y) 900171: -> decltype(__y.base() - __x.base()) 900171: { return __y.base() - __x.base(); } 900171: 900171: 900171: template 900171: 900171: inline reverse_iterator<_Iterator> 900171: operator+(typename reverse_iterator<_Iterator>::difference_type __n, 900171: const reverse_iterator<_Iterator>& __x) 900171: { return reverse_iterator<_Iterator>(__x.base() - __n); } 900171: 900171: 900171: 900171: template 900171: inline reverse_iterator<_Iterator> 900171: __make_reverse_iterator(_Iterator __i) 900171: { return reverse_iterator<_Iterator>(__i); } 900171: # 662 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_iterator.h" 3 900171: template 900171: 900171: auto 900171: __niter_base(reverse_iterator<_Iterator> __it) 900171: -> decltype(__make_reverse_iterator(__niter_base(__it.base()))) 900171: { return __make_reverse_iterator(__niter_base(__it.base())); } 900171: 900171: template 900171: struct __is_move_iterator > 900171: : __is_move_iterator<_Iterator> 900171: { }; 900171: 900171: template 900171: 900171: auto 900171: __miter_base(reverse_iterator<_Iterator> __it) 900171: -> decltype(__make_reverse_iterator(__miter_base(__it.base()))) 900171: { return __make_reverse_iterator(__miter_base(__it.base())); } 900171: # 693 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_iterator.h" 3 900171: template 900171: class back_insert_iterator 900171: : public iterator 900171: { 900171: protected: 900171: _Container* container; 900171: 900171: public: 900171: 900171: typedef _Container container_type; 900171: 900171: 900171: 900171: 900171: 900171: explicit 900171: back_insert_iterator(_Container& __x) 900171: : container(std::__addressof(__x)) { } 900171: # 731 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_iterator.h" 3 900171: 900171: back_insert_iterator& 900171: operator=(const typename _Container::value_type& __value) 900171: { 900171: container->push_back(__value); 900171: return *this; 900171: } 900171: 900171: 900171: back_insert_iterator& 900171: operator=(typename _Container::value_type&& __value) 900171: { 900171: container->push_back(std::move(__value)); 900171: return *this; 900171: } 900171: 900171: 900171: 900171: 900171: back_insert_iterator& 900171: operator*() 900171: { return *this; } 900171: 900171: 900171: 900171: back_insert_iterator& 900171: operator++() 900171: { return *this; } 900171: 900171: 900171: 900171: back_insert_iterator 900171: operator++(int) 900171: { return *this; } 900171: }; 900171: # 778 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_iterator.h" 3 900171: template 900171: 900171: inline back_insert_iterator<_Container> 900171: back_inserter(_Container& __x) 900171: { return back_insert_iterator<_Container>(__x); } 900171: # 794 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_iterator.h" 3 900171: template 900171: class front_insert_iterator 900171: : public iterator 900171: { 900171: protected: 900171: _Container* container; 900171: 900171: public: 900171: 900171: typedef _Container container_type; 900171: 900171: 900171: 900171: 900171: 900171: explicit 900171: front_insert_iterator(_Container& __x) 900171: : container(std::__addressof(__x)) { } 900171: # 832 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_iterator.h" 3 900171: 900171: front_insert_iterator& 900171: operator=(const typename _Container::value_type& __value) 900171: { 900171: container->push_front(__value); 900171: return *this; 900171: } 900171: 900171: 900171: front_insert_iterator& 900171: operator=(typename _Container::value_type&& __value) 900171: { 900171: container->push_front(std::move(__value)); 900171: return *this; 900171: } 900171: 900171: 900171: 900171: 900171: front_insert_iterator& 900171: operator*() 900171: { return *this; } 900171: 900171: 900171: 900171: front_insert_iterator& 900171: operator++() 900171: { return *this; } 900171: 900171: 900171: 900171: front_insert_iterator 900171: operator++(int) 900171: { return *this; } 900171: }; 900171: # 879 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_iterator.h" 3 900171: template 900171: 900171: inline front_insert_iterator<_Container> 900171: front_inserter(_Container& __x) 900171: { return front_insert_iterator<_Container>(__x); } 900171: # 899 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_iterator.h" 3 900171: template 900171: class insert_iterator 900171: : public iterator 900171: { 900171: 900171: 900171: 900171: typedef typename _Container::iterator _Iter; 900171: 900171: protected: 900171: _Container* container; 900171: _Iter iter; 900171: 900171: public: 900171: 900171: typedef _Container container_type; 900171: # 924 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_iterator.h" 3 900171: 900171: insert_iterator(_Container& __x, _Iter __i) 900171: : container(std::__addressof(__x)), iter(__i) {} 900171: # 960 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_iterator.h" 3 900171: 900171: insert_iterator& 900171: operator=(const typename _Container::value_type& __value) 900171: { 900171: iter = container->insert(iter, __value); 900171: ++iter; 900171: return *this; 900171: } 900171: 900171: 900171: insert_iterator& 900171: operator=(typename _Container::value_type&& __value) 900171: { 900171: iter = container->insert(iter, std::move(__value)); 900171: ++iter; 900171: return *this; 900171: } 900171: 900171: 900171: 900171: 900171: insert_iterator& 900171: operator*() 900171: { return *this; } 900171: 900171: 900171: 900171: insert_iterator& 900171: operator++() 900171: { return *this; } 900171: 900171: 900171: 900171: insert_iterator& 900171: operator++(int) 900171: { return *this; } 900171: }; 900171: 900171: #pragma GCC diagnostic pop 900171: # 1019 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_iterator.h" 3 900171: template 900171: 900171: inline insert_iterator<_Container> 900171: inserter(_Container& __x, typename _Container::iterator __i) 900171: { return insert_iterator<_Container>(__x, __i); } 900171: 900171: 900171: 900171: 900171: 900171: } 900171: 900171: namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) 900171: { 900171: 900171: # 1042 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_iterator.h" 3 900171: template 900171: class __normal_iterator 900171: { 900171: protected: 900171: _Iterator _M_current; 900171: 900171: typedef std::iterator_traits<_Iterator> __traits_type; 900171: 900171: 900171: template 900171: using __convertible_from 900171: = std::__enable_if_t::value>; 900171: 900171: 900171: public: 900171: typedef _Iterator iterator_type; 900171: typedef typename __traits_type::iterator_category iterator_category; 900171: typedef typename __traits_type::value_type value_type; 900171: typedef typename __traits_type::difference_type difference_type; 900171: typedef typename __traits_type::reference reference; 900171: typedef typename __traits_type::pointer pointer; 900171: 900171: 900171: 900171: 900171: 900171: constexpr __normal_iterator() noexcept 900171: : _M_current(_Iterator()) { } 900171: 900171: explicit 900171: __normal_iterator(const _Iterator& __i) noexcept 900171: : _M_current(__i) { } 900171: 900171: 900171: 900171: template> 900171: 900171: __normal_iterator(const __normal_iterator<_Iter, _Container>& __i) 900171: noexcept 900171: # 1090 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_iterator.h" 3 900171: : _M_current(__i.base()) { } 900171: 900171: 900171: 900171: reference 900171: operator*() const noexcept 900171: { return *_M_current; } 900171: 900171: 900171: pointer 900171: operator->() const noexcept 900171: { return _M_current; } 900171: 900171: 900171: __normal_iterator& 900171: operator++() noexcept 900171: { 900171: ++_M_current; 900171: return *this; 900171: } 900171: 900171: 900171: __normal_iterator 900171: operator++(int) noexcept 900171: { return __normal_iterator(_M_current++); } 900171: 900171: 900171: 900171: __normal_iterator& 900171: operator--() noexcept 900171: { 900171: --_M_current; 900171: return *this; 900171: } 900171: 900171: 900171: __normal_iterator 900171: operator--(int) noexcept 900171: { return __normal_iterator(_M_current--); } 900171: 900171: 900171: 900171: reference 900171: operator[](difference_type __n) const noexcept 900171: { return _M_current[__n]; } 900171: 900171: 900171: __normal_iterator& 900171: operator+=(difference_type __n) noexcept 900171: { _M_current += __n; return *this; } 900171: 900171: 900171: __normal_iterator 900171: operator+(difference_type __n) const noexcept 900171: { return __normal_iterator(_M_current + __n); } 900171: 900171: 900171: __normal_iterator& 900171: operator-=(difference_type __n) noexcept 900171: { _M_current -= __n; return *this; } 900171: 900171: 900171: __normal_iterator 900171: operator-(difference_type __n) const noexcept 900171: { return __normal_iterator(_M_current - __n); } 900171: 900171: 900171: const _Iterator& 900171: base() const noexcept 900171: { return _M_current; } 900171: }; 900171: # 1210 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_iterator.h" 3 900171: template 900171: 900171: inline bool 900171: operator==(const __normal_iterator<_IteratorL, _Container>& __lhs, 900171: const __normal_iterator<_IteratorR, _Container>& __rhs) 900171: noexcept 900171: { return __lhs.base() == __rhs.base(); } 900171: 900171: template 900171: 900171: inline bool 900171: operator==(const __normal_iterator<_Iterator, _Container>& __lhs, 900171: const __normal_iterator<_Iterator, _Container>& __rhs) 900171: noexcept 900171: { return __lhs.base() == __rhs.base(); } 900171: 900171: template 900171: 900171: inline bool 900171: operator!=(const __normal_iterator<_IteratorL, _Container>& __lhs, 900171: const __normal_iterator<_IteratorR, _Container>& __rhs) 900171: noexcept 900171: { return __lhs.base() != __rhs.base(); } 900171: 900171: template 900171: 900171: inline bool 900171: operator!=(const __normal_iterator<_Iterator, _Container>& __lhs, 900171: const __normal_iterator<_Iterator, _Container>& __rhs) 900171: noexcept 900171: { return __lhs.base() != __rhs.base(); } 900171: 900171: 900171: template 900171: 900171: inline bool 900171: operator<(const __normal_iterator<_IteratorL, _Container>& __lhs, 900171: const __normal_iterator<_IteratorR, _Container>& __rhs) 900171: noexcept 900171: { return __lhs.base() < __rhs.base(); } 900171: 900171: template 900171: 900171: inline bool 900171: operator<(const __normal_iterator<_Iterator, _Container>& __lhs, 900171: const __normal_iterator<_Iterator, _Container>& __rhs) 900171: noexcept 900171: { return __lhs.base() < __rhs.base(); } 900171: 900171: template 900171: 900171: inline bool 900171: operator>(const __normal_iterator<_IteratorL, _Container>& __lhs, 900171: const __normal_iterator<_IteratorR, _Container>& __rhs) 900171: noexcept 900171: { return __lhs.base() > __rhs.base(); } 900171: 900171: template 900171: 900171: inline bool 900171: operator>(const __normal_iterator<_Iterator, _Container>& __lhs, 900171: const __normal_iterator<_Iterator, _Container>& __rhs) 900171: noexcept 900171: { return __lhs.base() > __rhs.base(); } 900171: 900171: template 900171: 900171: inline bool 900171: operator<=(const __normal_iterator<_IteratorL, _Container>& __lhs, 900171: const __normal_iterator<_IteratorR, _Container>& __rhs) 900171: noexcept 900171: { return __lhs.base() <= __rhs.base(); } 900171: 900171: template 900171: 900171: inline bool 900171: operator<=(const __normal_iterator<_Iterator, _Container>& __lhs, 900171: const __normal_iterator<_Iterator, _Container>& __rhs) 900171: noexcept 900171: { return __lhs.base() <= __rhs.base(); } 900171: 900171: template 900171: 900171: inline bool 900171: operator>=(const __normal_iterator<_IteratorL, _Container>& __lhs, 900171: const __normal_iterator<_IteratorR, _Container>& __rhs) 900171: noexcept 900171: { return __lhs.base() >= __rhs.base(); } 900171: 900171: template 900171: 900171: inline bool 900171: operator>=(const __normal_iterator<_Iterator, _Container>& __lhs, 900171: const __normal_iterator<_Iterator, _Container>& __rhs) 900171: noexcept 900171: { return __lhs.base() >= __rhs.base(); } 900171: 900171: 900171: 900171: 900171: 900171: 900171: template 900171: 900171: 900171: [[__nodiscard__]] 900171: inline auto 900171: operator-(const __normal_iterator<_IteratorL, _Container>& __lhs, 900171: const __normal_iterator<_IteratorR, _Container>& __rhs) noexcept 900171: -> decltype(__lhs.base() - __rhs.base()) 900171: 900171: 900171: 900171: 900171: 900171: { return __lhs.base() - __rhs.base(); } 900171: 900171: template 900171: 900171: inline typename __normal_iterator<_Iterator, _Container>::difference_type 900171: operator-(const __normal_iterator<_Iterator, _Container>& __lhs, 900171: const __normal_iterator<_Iterator, _Container>& __rhs) 900171: noexcept 900171: { return __lhs.base() - __rhs.base(); } 900171: 900171: template 900171: 900171: inline __normal_iterator<_Iterator, _Container> 900171: operator+(typename __normal_iterator<_Iterator, _Container>::difference_type 900171: __n, const __normal_iterator<_Iterator, _Container>& __i) 900171: noexcept 900171: { return __normal_iterator<_Iterator, _Container>(__i.base() + __n); } 900171: 900171: 900171: } 900171: 900171: namespace std __attribute__ ((__visibility__ ("default"))) 900171: { 900171: 900171: 900171: template 900171: 900171: _Iterator 900171: __niter_base(__gnu_cxx::__normal_iterator<_Iterator, _Container> __it) 900171: noexcept(std::is_nothrow_copy_constructible<_Iterator>::value) 900171: { return __it.base(); } 900171: 900171: 900171: 900171: 900171: 900171: 900171: template 900171: constexpr auto 900171: __to_address(const __gnu_cxx::__normal_iterator<_Iterator, 900171: _Container>& __it) noexcept 900171: -> decltype(std::__to_address(__it.base())) 900171: { return std::__to_address(__it.base()); } 900171: # 1417 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_iterator.h" 3 900171: namespace __detail 900171: { 900171: # 1433 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_iterator.h" 3 900171: } 900171: # 1444 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_iterator.h" 3 900171: template 900171: class move_iterator 900171: 900171: 900171: 900171: { 900171: _Iterator _M_current; 900171: 900171: using __traits_type = iterator_traits<_Iterator>; 900171: 900171: using __base_ref = typename __traits_type::reference; 900171: 900171: 900171: template 900171: friend class move_iterator; 900171: # 1468 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_iterator.h" 3 900171: public: 900171: using iterator_type = _Iterator; 900171: # 1479 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_iterator.h" 3 900171: typedef typename __traits_type::iterator_category iterator_category; 900171: typedef typename __traits_type::value_type value_type; 900171: typedef typename __traits_type::difference_type difference_type; 900171: 900171: typedef _Iterator pointer; 900171: 900171: 900171: using reference 900171: = __conditional_t::value, 900171: typename remove_reference<__base_ref>::type&&, 900171: __base_ref>; 900171: 900171: 900171: 900171: move_iterator() 900171: : _M_current() { } 900171: 900171: explicit 900171: move_iterator(iterator_type __i) 900171: : _M_current(std::move(__i)) { } 900171: 900171: template 900171: 900171: 900171: 900171: 900171: move_iterator(const move_iterator<_Iter>& __i) 900171: : _M_current(__i._M_current) { } 900171: 900171: template 900171: 900171: 900171: 900171: 900171: 900171: move_iterator& operator=(const move_iterator<_Iter>& __i) 900171: { 900171: _M_current = __i._M_current; 900171: return *this; 900171: } 900171: 900171: 900171: [[__nodiscard__]] 900171: iterator_type 900171: base() const 900171: { return _M_current; } 900171: # 1537 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_iterator.h" 3 900171: [[__nodiscard__]] 900171: reference 900171: operator*() const 900171: 900171: 900171: 900171: { return static_cast(*_M_current); } 900171: 900171: 900171: [[__nodiscard__]] 900171: pointer 900171: operator->() const 900171: { return _M_current; } 900171: 900171: move_iterator& 900171: operator++() 900171: { 900171: ++_M_current; 900171: return *this; 900171: } 900171: 900171: move_iterator 900171: operator++(int) 900171: { 900171: move_iterator __tmp = *this; 900171: ++_M_current; 900171: return __tmp; 900171: } 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: move_iterator& 900171: operator--() 900171: { 900171: --_M_current; 900171: return *this; 900171: } 900171: 900171: move_iterator 900171: operator--(int) 900171: { 900171: move_iterator __tmp = *this; 900171: --_M_current; 900171: return __tmp; 900171: } 900171: 900171: [[__nodiscard__]] 900171: move_iterator 900171: operator+(difference_type __n) const 900171: { return move_iterator(_M_current + __n); } 900171: 900171: move_iterator& 900171: operator+=(difference_type __n) 900171: { 900171: _M_current += __n; 900171: return *this; 900171: } 900171: 900171: [[__nodiscard__]] 900171: move_iterator 900171: operator-(difference_type __n) const 900171: { return move_iterator(_M_current - __n); } 900171: 900171: move_iterator& 900171: operator-=(difference_type __n) 900171: { 900171: _M_current -= __n; 900171: return *this; 900171: } 900171: 900171: [[__nodiscard__]] 900171: reference 900171: operator[](difference_type __n) const 900171: 900171: 900171: 900171: { return std::move(_M_current[__n]); } 900171: # 1651 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_iterator.h" 3 900171: }; 900171: 900171: template 900171: [[__nodiscard__]] 900171: inline bool 900171: operator==(const move_iterator<_IteratorL>& __x, 900171: const move_iterator<_IteratorR>& __y) 900171: 900171: 900171: 900171: { return __x.base() == __y.base(); } 900171: # 1672 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_iterator.h" 3 900171: template 900171: [[__nodiscard__]] 900171: inline bool 900171: operator!=(const move_iterator<_IteratorL>& __x, 900171: const move_iterator<_IteratorR>& __y) 900171: { return !(__x == __y); } 900171: 900171: 900171: template 900171: [[__nodiscard__]] 900171: inline bool 900171: operator<(const move_iterator<_IteratorL>& __x, 900171: const move_iterator<_IteratorR>& __y) 900171: 900171: 900171: 900171: { return __x.base() < __y.base(); } 900171: 900171: template 900171: [[__nodiscard__]] 900171: inline bool 900171: operator<=(const move_iterator<_IteratorL>& __x, 900171: const move_iterator<_IteratorR>& __y) 900171: 900171: 900171: 900171: { return !(__y < __x); } 900171: 900171: template 900171: [[__nodiscard__]] 900171: inline bool 900171: operator>(const move_iterator<_IteratorL>& __x, 900171: const move_iterator<_IteratorR>& __y) 900171: 900171: 900171: 900171: { return __y < __x; } 900171: 900171: template 900171: [[__nodiscard__]] 900171: inline bool 900171: operator>=(const move_iterator<_IteratorL>& __x, 900171: const move_iterator<_IteratorR>& __y) 900171: 900171: 900171: 900171: { return !(__x < __y); } 900171: 900171: 900171: 900171: 900171: template 900171: [[__nodiscard__]] 900171: inline bool 900171: operator==(const move_iterator<_Iterator>& __x, 900171: const move_iterator<_Iterator>& __y) 900171: { return __x.base() == __y.base(); } 900171: # 1738 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_iterator.h" 3 900171: template 900171: [[__nodiscard__]] 900171: inline bool 900171: operator!=(const move_iterator<_Iterator>& __x, 900171: const move_iterator<_Iterator>& __y) 900171: { return !(__x == __y); } 900171: 900171: template 900171: [[__nodiscard__]] 900171: inline bool 900171: operator<(const move_iterator<_Iterator>& __x, 900171: const move_iterator<_Iterator>& __y) 900171: { return __x.base() < __y.base(); } 900171: 900171: template 900171: [[__nodiscard__]] 900171: inline bool 900171: operator<=(const move_iterator<_Iterator>& __x, 900171: const move_iterator<_Iterator>& __y) 900171: { return !(__y < __x); } 900171: 900171: template 900171: [[__nodiscard__]] 900171: inline bool 900171: operator>(const move_iterator<_Iterator>& __x, 900171: const move_iterator<_Iterator>& __y) 900171: { return __y < __x; } 900171: 900171: template 900171: [[__nodiscard__]] 900171: inline bool 900171: operator>=(const move_iterator<_Iterator>& __x, 900171: const move_iterator<_Iterator>& __y) 900171: { return !(__x < __y); } 900171: 900171: 900171: 900171: template 900171: [[__nodiscard__]] 900171: inline auto 900171: operator-(const move_iterator<_IteratorL>& __x, 900171: const move_iterator<_IteratorR>& __y) 900171: -> decltype(__x.base() - __y.base()) 900171: { return __x.base() - __y.base(); } 900171: 900171: template 900171: [[__nodiscard__]] 900171: inline move_iterator<_Iterator> 900171: operator+(typename move_iterator<_Iterator>::difference_type __n, 900171: const move_iterator<_Iterator>& __x) 900171: { return __x + __n; } 900171: 900171: template 900171: [[__nodiscard__]] 900171: inline move_iterator<_Iterator> 900171: make_move_iterator(_Iterator __i) 900171: { return move_iterator<_Iterator>(std::move(__i)); } 900171: 900171: template::value_type>::value, 900171: _Iterator, move_iterator<_Iterator>>> 900171: inline _ReturnType 900171: __make_move_if_noexcept_iterator(_Iterator __i) 900171: { return _ReturnType(__i); } 900171: 900171: 900171: 900171: template::value, 900171: const _Tp*, move_iterator<_Tp*>>> 900171: inline _ReturnType 900171: __make_move_if_noexcept_iterator(_Tp* __i) 900171: { return _ReturnType(__i); } 900171: # 2552 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_iterator.h" 3 900171: template 900171: 900171: auto 900171: __niter_base(move_iterator<_Iterator> __it) 900171: -> decltype(make_move_iterator(__niter_base(__it.base()))) 900171: { return make_move_iterator(__niter_base(__it.base())); } 900171: 900171: template 900171: struct __is_move_iterator > 900171: { 900171: enum { __value = 1 }; 900171: typedef __true_type __type; 900171: }; 900171: 900171: template 900171: 900171: auto 900171: __miter_base(move_iterator<_Iterator> __it) 900171: -> decltype(__miter_base(__it.base())) 900171: { return __miter_base(__it.base()); } 900171: # 2601 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_iterator.h" 3 900171: 900171: } 900171: # 68 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algobase.h" 2 3 900171: 900171: # 1 "/usr/aarch64-linux-gnu/include/c++/12/debug/debug.h" 1 3 900171: # 48 "/usr/aarch64-linux-gnu/include/c++/12/debug/debug.h" 3 900171: namespace std 900171: { 900171: namespace __debug { } 900171: } 900171: 900171: 900171: 900171: 900171: namespace __gnu_debug 900171: { 900171: using namespace std::__debug; 900171: 900171: template 900171: struct _Safe_iterator; 900171: } 900171: # 70 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algobase.h" 2 3 900171: 900171: # 1 "/usr/aarch64-linux-gnu/include/c++/12/bits/predefined_ops.h" 1 3 900171: # 35 "/usr/aarch64-linux-gnu/include/c++/12/bits/predefined_ops.h" 3 900171: namespace __gnu_cxx 900171: { 900171: namespace __ops 900171: { 900171: struct _Iter_less_iter 900171: { 900171: template 900171: 900171: bool 900171: operator()(_Iterator1 __it1, _Iterator2 __it2) const 900171: { return *__it1 < *__it2; } 900171: }; 900171: 900171: 900171: inline _Iter_less_iter 900171: __iter_less_iter() 900171: { return _Iter_less_iter(); } 900171: 900171: struct _Iter_less_val 900171: { 900171: 900171: constexpr _Iter_less_val() = default; 900171: 900171: 900171: 900171: 900171: 900171: explicit 900171: _Iter_less_val(_Iter_less_iter) { } 900171: 900171: template 900171: 900171: bool 900171: operator()(_Iterator __it, _Value& __val) const 900171: { return *__it < __val; } 900171: }; 900171: 900171: 900171: inline _Iter_less_val 900171: __iter_less_val() 900171: { return _Iter_less_val(); } 900171: 900171: 900171: inline _Iter_less_val 900171: __iter_comp_val(_Iter_less_iter) 900171: { return _Iter_less_val(); } 900171: 900171: struct _Val_less_iter 900171: { 900171: 900171: constexpr _Val_less_iter() = default; 900171: 900171: 900171: 900171: 900171: 900171: explicit 900171: _Val_less_iter(_Iter_less_iter) { } 900171: 900171: template 900171: 900171: bool 900171: operator()(_Value& __val, _Iterator __it) const 900171: { return __val < *__it; } 900171: }; 900171: 900171: 900171: inline _Val_less_iter 900171: __val_less_iter() 900171: { return _Val_less_iter(); } 900171: 900171: 900171: inline _Val_less_iter 900171: __val_comp_iter(_Iter_less_iter) 900171: { return _Val_less_iter(); } 900171: 900171: struct _Iter_equal_to_iter 900171: { 900171: template 900171: 900171: bool 900171: operator()(_Iterator1 __it1, _Iterator2 __it2) const 900171: { return *__it1 == *__it2; } 900171: }; 900171: 900171: 900171: inline _Iter_equal_to_iter 900171: __iter_equal_to_iter() 900171: { return _Iter_equal_to_iter(); } 900171: 900171: struct _Iter_equal_to_val 900171: { 900171: template 900171: 900171: bool 900171: operator()(_Iterator __it, _Value& __val) const 900171: { return *__it == __val; } 900171: }; 900171: 900171: 900171: inline _Iter_equal_to_val 900171: __iter_equal_to_val() 900171: { return _Iter_equal_to_val(); } 900171: 900171: 900171: inline _Iter_equal_to_val 900171: __iter_comp_val(_Iter_equal_to_iter) 900171: { return _Iter_equal_to_val(); } 900171: 900171: template 900171: struct _Iter_comp_iter 900171: { 900171: _Compare _M_comp; 900171: 900171: explicit 900171: _Iter_comp_iter(_Compare __comp) 900171: : _M_comp(std::move(__comp)) 900171: { } 900171: 900171: template 900171: 900171: bool 900171: operator()(_Iterator1 __it1, _Iterator2 __it2) 900171: { return bool(_M_comp(*__it1, *__it2)); } 900171: }; 900171: 900171: template 900171: 900171: inline _Iter_comp_iter<_Compare> 900171: __iter_comp_iter(_Compare __comp) 900171: { return _Iter_comp_iter<_Compare>(std::move(__comp)); } 900171: 900171: template 900171: struct _Iter_comp_val 900171: { 900171: _Compare _M_comp; 900171: 900171: 900171: explicit 900171: _Iter_comp_val(_Compare __comp) 900171: : _M_comp(std::move(__comp)) 900171: { } 900171: 900171: 900171: explicit 900171: _Iter_comp_val(const _Iter_comp_iter<_Compare>& __comp) 900171: : _M_comp(__comp._M_comp) 900171: { } 900171: 900171: 900171: 900171: explicit 900171: _Iter_comp_val(_Iter_comp_iter<_Compare>&& __comp) 900171: : _M_comp(std::move(__comp._M_comp)) 900171: { } 900171: 900171: 900171: template 900171: 900171: bool 900171: operator()(_Iterator __it, _Value& __val) 900171: { return bool(_M_comp(*__it, __val)); } 900171: }; 900171: 900171: template 900171: 900171: inline _Iter_comp_val<_Compare> 900171: __iter_comp_val(_Compare __comp) 900171: { return _Iter_comp_val<_Compare>(std::move(__comp)); } 900171: 900171: template 900171: 900171: inline _Iter_comp_val<_Compare> 900171: __iter_comp_val(_Iter_comp_iter<_Compare> __comp) 900171: { return _Iter_comp_val<_Compare>(std::move(__comp)); } 900171: 900171: template 900171: struct _Val_comp_iter 900171: { 900171: _Compare _M_comp; 900171: 900171: 900171: explicit 900171: _Val_comp_iter(_Compare __comp) 900171: : _M_comp(std::move(__comp)) 900171: { } 900171: 900171: 900171: explicit 900171: _Val_comp_iter(const _Iter_comp_iter<_Compare>& __comp) 900171: : _M_comp(__comp._M_comp) 900171: { } 900171: 900171: 900171: 900171: explicit 900171: _Val_comp_iter(_Iter_comp_iter<_Compare>&& __comp) 900171: : _M_comp(std::move(__comp._M_comp)) 900171: { } 900171: 900171: 900171: template 900171: 900171: bool 900171: operator()(_Value& __val, _Iterator __it) 900171: { return bool(_M_comp(__val, *__it)); } 900171: }; 900171: 900171: template 900171: 900171: inline _Val_comp_iter<_Compare> 900171: __val_comp_iter(_Compare __comp) 900171: { return _Val_comp_iter<_Compare>(std::move(__comp)); } 900171: 900171: template 900171: 900171: inline _Val_comp_iter<_Compare> 900171: __val_comp_iter(_Iter_comp_iter<_Compare> __comp) 900171: { return _Val_comp_iter<_Compare>(std::move(__comp)); } 900171: 900171: template 900171: struct _Iter_equals_val 900171: { 900171: _Value& _M_value; 900171: 900171: 900171: explicit 900171: _Iter_equals_val(_Value& __value) 900171: : _M_value(__value) 900171: { } 900171: 900171: template 900171: 900171: bool 900171: operator()(_Iterator __it) 900171: { return *__it == _M_value; } 900171: }; 900171: 900171: template 900171: 900171: inline _Iter_equals_val<_Value> 900171: __iter_equals_val(_Value& __val) 900171: { return _Iter_equals_val<_Value>(__val); } 900171: 900171: template 900171: struct _Iter_equals_iter 900171: { 900171: _Iterator1 _M_it1; 900171: 900171: 900171: explicit 900171: _Iter_equals_iter(_Iterator1 __it1) 900171: : _M_it1(__it1) 900171: { } 900171: 900171: template 900171: 900171: bool 900171: operator()(_Iterator2 __it2) 900171: { return *__it2 == *_M_it1; } 900171: }; 900171: 900171: template 900171: 900171: inline _Iter_equals_iter<_Iterator> 900171: __iter_comp_iter(_Iter_equal_to_iter, _Iterator __it) 900171: { return _Iter_equals_iter<_Iterator>(__it); } 900171: 900171: template 900171: struct _Iter_pred 900171: { 900171: _Predicate _M_pred; 900171: 900171: 900171: explicit 900171: _Iter_pred(_Predicate __pred) 900171: : _M_pred(std::move(__pred)) 900171: { } 900171: 900171: template 900171: 900171: bool 900171: operator()(_Iterator __it) 900171: { return bool(_M_pred(*__it)); } 900171: }; 900171: 900171: template 900171: 900171: inline _Iter_pred<_Predicate> 900171: __pred_iter(_Predicate __pred) 900171: { return _Iter_pred<_Predicate>(std::move(__pred)); } 900171: 900171: template 900171: struct _Iter_comp_to_val 900171: { 900171: _Compare _M_comp; 900171: _Value& _M_value; 900171: 900171: 900171: _Iter_comp_to_val(_Compare __comp, _Value& __value) 900171: : _M_comp(std::move(__comp)), _M_value(__value) 900171: { } 900171: 900171: template 900171: 900171: bool 900171: operator()(_Iterator __it) 900171: { return bool(_M_comp(*__it, _M_value)); } 900171: }; 900171: 900171: template 900171: _Iter_comp_to_val<_Compare, _Value> 900171: 900171: __iter_comp_val(_Compare __comp, _Value &__val) 900171: { 900171: return _Iter_comp_to_val<_Compare, _Value>(std::move(__comp), __val); 900171: } 900171: 900171: template 900171: struct _Iter_comp_to_iter 900171: { 900171: _Compare _M_comp; 900171: _Iterator1 _M_it1; 900171: 900171: 900171: _Iter_comp_to_iter(_Compare __comp, _Iterator1 __it1) 900171: : _M_comp(std::move(__comp)), _M_it1(__it1) 900171: { } 900171: 900171: template 900171: 900171: bool 900171: operator()(_Iterator2 __it2) 900171: { return bool(_M_comp(*__it2, *_M_it1)); } 900171: }; 900171: 900171: template 900171: 900171: inline _Iter_comp_to_iter<_Compare, _Iterator> 900171: __iter_comp_iter(_Iter_comp_iter<_Compare> __comp, _Iterator __it) 900171: { 900171: return _Iter_comp_to_iter<_Compare, _Iterator>( 900171: std::move(__comp._M_comp), __it); 900171: } 900171: 900171: template 900171: struct _Iter_negate 900171: { 900171: _Predicate _M_pred; 900171: 900171: 900171: explicit 900171: _Iter_negate(_Predicate __pred) 900171: : _M_pred(std::move(__pred)) 900171: { } 900171: 900171: template 900171: 900171: bool 900171: operator()(_Iterator __it) 900171: { return !bool(_M_pred(*__it)); } 900171: }; 900171: 900171: template 900171: 900171: inline _Iter_negate<_Predicate> 900171: __negate(_Iter_pred<_Predicate> __pred) 900171: { return _Iter_negate<_Predicate>(std::move(__pred._M_pred)); } 900171: 900171: } 900171: } 900171: # 72 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algobase.h" 2 3 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: namespace std __attribute__ ((__visibility__ ("default"))) 900171: { 900171: 900171: 900171: 900171: 900171: 900171: 900171: template 900171: 900171: inline int 900171: __memcmp(const _Tp* __first1, const _Up* __first2, size_t __num) 900171: { 900171: 900171: static_assert(sizeof(_Tp) == sizeof(_Up), "can be compared with memcmp"); 900171: # 105 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algobase.h" 3 900171: return __builtin_memcmp(__first1, __first2, sizeof(_Tp) * __num); 900171: } 900171: # 149 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algobase.h" 3 900171: template 900171: 900171: inline void 900171: iter_swap(_ForwardIterator1 __a, _ForwardIterator2 __b) 900171: { 900171: 900171: 900171: 900171: 900171: # 182 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algobase.h" 3 900171: swap(*__a, *__b); 900171: 900171: } 900171: # 198 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algobase.h" 3 900171: template 900171: 900171: _ForwardIterator2 900171: swap_ranges(_ForwardIterator1 __first1, _ForwardIterator1 __last1, 900171: _ForwardIterator2 __first2) 900171: { 900171: 900171: 900171: 900171: 900171: 900171: ; 900171: 900171: for (; __first1 != __last1; ++__first1, (void)++__first2) 900171: std::iter_swap(__first1, __first2); 900171: return __first2; 900171: } 900171: # 227 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algobase.h" 3 900171: template 900171: 900171: inline const _Tp& 900171: min(const _Tp& __a, const _Tp& __b) 900171: { 900171: 900171: 900171: 900171: if (__b < __a) 900171: return __b; 900171: return __a; 900171: } 900171: # 251 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algobase.h" 3 900171: template 900171: 900171: inline const _Tp& 900171: max(const _Tp& __a, const _Tp& __b) 900171: { 900171: 900171: 900171: 900171: if (__a < __b) 900171: return __b; 900171: return __a; 900171: } 900171: # 275 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algobase.h" 3 900171: template 900171: 900171: inline const _Tp& 900171: min(const _Tp& __a, const _Tp& __b, _Compare __comp) 900171: { 900171: 900171: if (__comp(__b, __a)) 900171: return __b; 900171: return __a; 900171: } 900171: # 297 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algobase.h" 3 900171: template 900171: 900171: inline const _Tp& 900171: max(const _Tp& __a, const _Tp& __b, _Compare __comp) 900171: { 900171: 900171: if (__comp(__a, __b)) 900171: return __b; 900171: return __a; 900171: } 900171: 900171: 900171: 900171: template 900171: 900171: inline _Iterator 900171: __niter_base(_Iterator __it) 900171: noexcept(std::is_nothrow_copy_constructible<_Iterator>::value) 900171: { return __it; } 900171: 900171: template 900171: _Ite 900171: __niter_base(const ::__gnu_debug::_Safe_iterator<_Ite, _Seq, 900171: std::random_access_iterator_tag>&); 900171: 900171: 900171: 900171: 900171: template 900171: 900171: inline _From 900171: __niter_wrap(_From __from, _To __res) 900171: { return __from + (__res - std::__niter_base(__from)); } 900171: 900171: 900171: template 900171: 900171: inline _Iterator 900171: __niter_wrap(const _Iterator&, _Iterator __res) 900171: { return __res; } 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: template 900171: struct __copy_move 900171: { 900171: template 900171: 900171: static _OI 900171: __copy_m(_II __first, _II __last, _OI __result) 900171: { 900171: for (; __first != __last; ++__result, (void)++__first) 900171: *__result = *__first; 900171: return __result; 900171: } 900171: }; 900171: 900171: 900171: template 900171: struct __copy_move 900171: { 900171: template 900171: 900171: static _OI 900171: __copy_m(_II __first, _II __last, _OI __result) 900171: { 900171: for (; __first != __last; ++__result, (void)++__first) 900171: *__result = std::move(*__first); 900171: return __result; 900171: } 900171: }; 900171: 900171: 900171: template<> 900171: struct __copy_move 900171: { 900171: template 900171: 900171: static _OI 900171: __copy_m(_II __first, _II __last, _OI __result) 900171: { 900171: typedef typename iterator_traits<_II>::difference_type _Distance; 900171: for(_Distance __n = __last - __first; __n > 0; --__n) 900171: { 900171: *__result = *__first; 900171: ++__first; 900171: ++__result; 900171: } 900171: return __result; 900171: } 900171: }; 900171: 900171: 900171: template<> 900171: struct __copy_move 900171: { 900171: template 900171: 900171: static _OI 900171: __copy_m(_II __first, _II __last, _OI __result) 900171: { 900171: typedef typename iterator_traits<_II>::difference_type _Distance; 900171: for(_Distance __n = __last - __first; __n > 0; --__n) 900171: { 900171: *__result = std::move(*__first); 900171: ++__first; 900171: ++__result; 900171: } 900171: return __result; 900171: } 900171: }; 900171: 900171: 900171: template 900171: struct __copy_move<_IsMove, true, random_access_iterator_tag> 900171: { 900171: template 900171: 900171: static _Tp* 900171: __copy_m(const _Tp* __first, const _Tp* __last, _Tp* __result) 900171: { 900171: 900171: using __assignable = __conditional_t<_IsMove, 900171: is_move_assignable<_Tp>, 900171: is_copy_assignable<_Tp>>; 900171: 900171: static_assert( __assignable::value, "type must be assignable" ); 900171: 900171: const ptrdiff_t _Num = __last - __first; 900171: if (_Num) 900171: __builtin_memmove(__result, __first, sizeof(_Tp) * _Num); 900171: return __result + _Num; 900171: } 900171: }; 900171: 900171: 900171: 900171: template 900171: struct _Deque_iterator; 900171: 900171: struct _Bit_iterator; 900171: 900171: 900171: 900171: 900171: 900171: template 900171: struct char_traits; 900171: 900171: template 900171: class istreambuf_iterator; 900171: 900171: template 900171: class ostreambuf_iterator; 900171: 900171: template 900171: typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, 900171: ostreambuf_iterator<_CharT, char_traits<_CharT> > >::__type 900171: __copy_move_a2(_CharT*, _CharT*, 900171: ostreambuf_iterator<_CharT, char_traits<_CharT> >); 900171: 900171: template 900171: typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, 900171: ostreambuf_iterator<_CharT, char_traits<_CharT> > >::__type 900171: __copy_move_a2(const _CharT*, const _CharT*, 900171: ostreambuf_iterator<_CharT, char_traits<_CharT> >); 900171: 900171: template 900171: typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, 900171: _CharT*>::__type 900171: __copy_move_a2(istreambuf_iterator<_CharT, char_traits<_CharT> >, 900171: istreambuf_iterator<_CharT, char_traits<_CharT> >, _CharT*); 900171: 900171: template 900171: typename __gnu_cxx::__enable_if< 900171: __is_char<_CharT>::__value, 900171: std::_Deque_iterator<_CharT, _CharT&, _CharT*> >::__type 900171: __copy_move_a2( 900171: istreambuf_iterator<_CharT, char_traits<_CharT> >, 900171: istreambuf_iterator<_CharT, char_traits<_CharT> >, 900171: std::_Deque_iterator<_CharT, _CharT&, _CharT*>); 900171: 900171: template 900171: 900171: inline _OI 900171: __copy_move_a2(_II __first, _II __last, _OI __result) 900171: { 900171: typedef typename iterator_traits<_II>::iterator_category _Category; 900171: 900171: 900171: 900171: 900171: 900171: return std::__copy_move<_IsMove, __memcpyable<_OI, _II>::__value, 900171: _Category>::__copy_m(__first, __last, __result); 900171: } 900171: 900171: template 900171: _OI 900171: __copy_move_a1(std::_Deque_iterator<_Tp, _Ref, _Ptr>, 900171: std::_Deque_iterator<_Tp, _Ref, _Ptr>, 900171: _OI); 900171: 900171: template 900171: std::_Deque_iterator<_OTp, _OTp&, _OTp*> 900171: __copy_move_a1(std::_Deque_iterator<_ITp, _IRef, _IPtr>, 900171: std::_Deque_iterator<_ITp, _IRef, _IPtr>, 900171: std::_Deque_iterator<_OTp, _OTp&, _OTp*>); 900171: 900171: template 900171: typename __gnu_cxx::__enable_if< 900171: __is_random_access_iter<_II>::__value, 900171: std::_Deque_iterator<_Tp, _Tp&, _Tp*> >::__type 900171: __copy_move_a1(_II, _II, std::_Deque_iterator<_Tp, _Tp&, _Tp*>); 900171: 900171: template 900171: 900171: inline _OI 900171: __copy_move_a1(_II __first, _II __last, _OI __result) 900171: { return std::__copy_move_a2<_IsMove>(__first, __last, __result); } 900171: 900171: template 900171: 900171: inline _OI 900171: __copy_move_a(_II __first, _II __last, _OI __result) 900171: { 900171: return std::__niter_wrap(__result, 900171: std::__copy_move_a1<_IsMove>(std::__niter_base(__first), 900171: std::__niter_base(__last), 900171: std::__niter_base(__result))); 900171: } 900171: 900171: template 900171: _OI 900171: __copy_move_a(const ::__gnu_debug::_Safe_iterator<_Ite, _Seq, _Cat>&, 900171: const ::__gnu_debug::_Safe_iterator<_Ite, _Seq, _Cat>&, 900171: _OI); 900171: 900171: template 900171: __gnu_debug::_Safe_iterator<_Ite, _Seq, _Cat> 900171: __copy_move_a(_II, _II, 900171: const ::__gnu_debug::_Safe_iterator<_Ite, _Seq, _Cat>&); 900171: 900171: template 900171: ::__gnu_debug::_Safe_iterator<_OIte, _OSeq, _OCat> 900171: __copy_move_a(const ::__gnu_debug::_Safe_iterator<_IIte, _ISeq, _ICat>&, 900171: const ::__gnu_debug::_Safe_iterator<_IIte, _ISeq, _ICat>&, 900171: const ::__gnu_debug::_Safe_iterator<_OIte, _OSeq, _OCat>&); 900171: 900171: template 900171: 900171: _OutputIterator 900171: __copy_n_a(_InputIterator __first, _Size __n, _OutputIterator __result, 900171: bool) 900171: { 900171: if (__n > 0) 900171: { 900171: while (true) 900171: { 900171: *__result = *__first; 900171: ++__result; 900171: if (--__n > 0) 900171: ++__first; 900171: else 900171: break; 900171: } 900171: } 900171: return __result; 900171: } 900171: 900171: template 900171: typename __gnu_cxx::__enable_if< 900171: __is_char<_CharT>::__value, _CharT*>::__type 900171: __copy_n_a(istreambuf_iterator<_CharT, char_traits<_CharT> >, 900171: _Size, _CharT*, bool); 900171: 900171: template 900171: typename __gnu_cxx::__enable_if< 900171: __is_char<_CharT>::__value, 900171: std::_Deque_iterator<_CharT, _CharT&, _CharT*> >::__type 900171: __copy_n_a(istreambuf_iterator<_CharT, char_traits<_CharT> >, _Size, 900171: std::_Deque_iterator<_CharT, _CharT&, _CharT*>, 900171: bool); 900171: # 608 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algobase.h" 3 900171: template 900171: 900171: inline _OI 900171: copy(_II __first, _II __last, _OI __result) 900171: { 900171: 900171: 900171: 900171: 900171: ; 900171: 900171: return std::__copy_move_a<__is_move_iterator<_II>::__value> 900171: (std::__miter_base(__first), std::__miter_base(__last), __result); 900171: } 900171: # 641 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algobase.h" 3 900171: template 900171: 900171: inline _OI 900171: move(_II __first, _II __last, _OI __result) 900171: { 900171: 900171: 900171: 900171: 900171: ; 900171: 900171: return std::__copy_move_a(std::__miter_base(__first), 900171: std::__miter_base(__last), __result); 900171: } 900171: 900171: 900171: 900171: 900171: 900171: 900171: template 900171: struct __copy_move_backward 900171: { 900171: template 900171: 900171: static _BI2 900171: __copy_move_b(_BI1 __first, _BI1 __last, _BI2 __result) 900171: { 900171: while (__first != __last) 900171: *--__result = *--__last; 900171: return __result; 900171: } 900171: }; 900171: 900171: 900171: template 900171: struct __copy_move_backward 900171: { 900171: template 900171: 900171: static _BI2 900171: __copy_move_b(_BI1 __first, _BI1 __last, _BI2 __result) 900171: { 900171: while (__first != __last) 900171: *--__result = std::move(*--__last); 900171: return __result; 900171: } 900171: }; 900171: 900171: 900171: template<> 900171: struct __copy_move_backward 900171: { 900171: template 900171: 900171: static _BI2 900171: __copy_move_b(_BI1 __first, _BI1 __last, _BI2 __result) 900171: { 900171: typename iterator_traits<_BI1>::difference_type 900171: __n = __last - __first; 900171: for (; __n > 0; --__n) 900171: *--__result = *--__last; 900171: return __result; 900171: } 900171: }; 900171: 900171: 900171: template<> 900171: struct __copy_move_backward 900171: { 900171: template 900171: 900171: static _BI2 900171: __copy_move_b(_BI1 __first, _BI1 __last, _BI2 __result) 900171: { 900171: typename iterator_traits<_BI1>::difference_type 900171: __n = __last - __first; 900171: for (; __n > 0; --__n) 900171: *--__result = std::move(*--__last); 900171: return __result; 900171: } 900171: }; 900171: 900171: 900171: template 900171: struct __copy_move_backward<_IsMove, true, random_access_iterator_tag> 900171: { 900171: template 900171: 900171: static _Tp* 900171: __copy_move_b(const _Tp* __first, const _Tp* __last, _Tp* __result) 900171: { 900171: 900171: using __assignable = __conditional_t<_IsMove, 900171: is_move_assignable<_Tp>, 900171: is_copy_assignable<_Tp>>; 900171: 900171: static_assert( __assignable::value, "type must be assignable" ); 900171: 900171: const ptrdiff_t _Num = __last - __first; 900171: if (_Num) 900171: __builtin_memmove(__result - _Num, __first, sizeof(_Tp) * _Num); 900171: return __result - _Num; 900171: } 900171: }; 900171: 900171: template 900171: 900171: inline _BI2 900171: __copy_move_backward_a2(_BI1 __first, _BI1 __last, _BI2 __result) 900171: { 900171: typedef typename iterator_traits<_BI1>::iterator_category _Category; 900171: 900171: 900171: 900171: 900171: 900171: return std::__copy_move_backward<_IsMove, 900171: __memcpyable<_BI2, _BI1>::__value, 900171: _Category>::__copy_move_b(__first, 900171: __last, 900171: __result); 900171: } 900171: 900171: template 900171: 900171: inline _BI2 900171: __copy_move_backward_a1(_BI1 __first, _BI1 __last, _BI2 __result) 900171: { return std::__copy_move_backward_a2<_IsMove>(__first, __last, __result); } 900171: 900171: template 900171: _OI 900171: __copy_move_backward_a1(std::_Deque_iterator<_Tp, _Ref, _Ptr>, 900171: std::_Deque_iterator<_Tp, _Ref, _Ptr>, 900171: _OI); 900171: 900171: template 900171: std::_Deque_iterator<_OTp, _OTp&, _OTp*> 900171: __copy_move_backward_a1( 900171: std::_Deque_iterator<_ITp, _IRef, _IPtr>, 900171: std::_Deque_iterator<_ITp, _IRef, _IPtr>, 900171: std::_Deque_iterator<_OTp, _OTp&, _OTp*>); 900171: 900171: template 900171: typename __gnu_cxx::__enable_if< 900171: __is_random_access_iter<_II>::__value, 900171: std::_Deque_iterator<_Tp, _Tp&, _Tp*> >::__type 900171: __copy_move_backward_a1(_II, _II, 900171: std::_Deque_iterator<_Tp, _Tp&, _Tp*>); 900171: 900171: template 900171: 900171: inline _OI 900171: __copy_move_backward_a(_II __first, _II __last, _OI __result) 900171: { 900171: return std::__niter_wrap(__result, 900171: std::__copy_move_backward_a1<_IsMove> 900171: (std::__niter_base(__first), std::__niter_base(__last), 900171: std::__niter_base(__result))); 900171: } 900171: 900171: template 900171: _OI 900171: __copy_move_backward_a( 900171: const ::__gnu_debug::_Safe_iterator<_Ite, _Seq, _Cat>&, 900171: const ::__gnu_debug::_Safe_iterator<_Ite, _Seq, _Cat>&, 900171: _OI); 900171: 900171: template 900171: __gnu_debug::_Safe_iterator<_Ite, _Seq, _Cat> 900171: __copy_move_backward_a(_II, _II, 900171: const ::__gnu_debug::_Safe_iterator<_Ite, _Seq, _Cat>&); 900171: 900171: template 900171: ::__gnu_debug::_Safe_iterator<_OIte, _OSeq, _OCat> 900171: __copy_move_backward_a( 900171: const ::__gnu_debug::_Safe_iterator<_IIte, _ISeq, _ICat>&, 900171: const ::__gnu_debug::_Safe_iterator<_IIte, _ISeq, _ICat>&, 900171: const ::__gnu_debug::_Safe_iterator<_OIte, _OSeq, _OCat>&); 900171: # 845 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algobase.h" 3 900171: template 900171: 900171: inline _BI2 900171: copy_backward(_BI1 __first, _BI1 __last, _BI2 __result) 900171: { 900171: 900171: 900171: 900171: 900171: 900171: ; 900171: 900171: return std::__copy_move_backward_a<__is_move_iterator<_BI1>::__value> 900171: (std::__miter_base(__first), std::__miter_base(__last), __result); 900171: } 900171: # 880 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algobase.h" 3 900171: template 900171: 900171: inline _BI2 900171: move_backward(_BI1 __first, _BI1 __last, _BI2 __result) 900171: { 900171: 900171: 900171: 900171: 900171: 900171: ; 900171: 900171: return std::__copy_move_backward_a(std::__miter_base(__first), 900171: std::__miter_base(__last), 900171: __result); 900171: } 900171: 900171: 900171: 900171: 900171: 900171: 900171: template 900171: 900171: inline typename 900171: __gnu_cxx::__enable_if::__value, void>::__type 900171: __fill_a1(_ForwardIterator __first, _ForwardIterator __last, 900171: const _Tp& __value) 900171: { 900171: for (; __first != __last; ++__first) 900171: *__first = __value; 900171: } 900171: 900171: template 900171: 900171: inline typename 900171: __gnu_cxx::__enable_if<__is_scalar<_Tp>::__value, void>::__type 900171: __fill_a1(_ForwardIterator __first, _ForwardIterator __last, 900171: const _Tp& __value) 900171: { 900171: const _Tp __tmp = __value; 900171: for (; __first != __last; ++__first) 900171: *__first = __tmp; 900171: } 900171: 900171: 900171: template 900171: 900171: inline typename 900171: __gnu_cxx::__enable_if<__is_byte<_Tp>::__value, void>::__type 900171: __fill_a1(_Tp* __first, _Tp* __last, const _Tp& __c) 900171: { 900171: const _Tp __tmp = __c; 900171: # 941 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algobase.h" 3 900171: if (const size_t __len = __last - __first) 900171: __builtin_memset(__first, static_cast(__tmp), __len); 900171: } 900171: 900171: template 900171: 900171: inline void 900171: __fill_a1(::__gnu_cxx::__normal_iterator<_Ite, _Cont> __first, 900171: ::__gnu_cxx::__normal_iterator<_Ite, _Cont> __last, 900171: const _Tp& __value) 900171: { std::__fill_a1(__first.base(), __last.base(), __value); } 900171: 900171: template 900171: void 900171: __fill_a1(const std::_Deque_iterator<_Tp, _Tp&, _Tp*>&, 900171: const std::_Deque_iterator<_Tp, _Tp&, _Tp*>&, 900171: const _VTp&); 900171: 900171: 900171: void 900171: __fill_a1(std::_Bit_iterator, std::_Bit_iterator, 900171: const bool&); 900171: 900171: template 900171: 900171: inline void 900171: __fill_a(_FIte __first, _FIte __last, const _Tp& __value) 900171: { std::__fill_a1(__first, __last, __value); } 900171: 900171: template 900171: void 900171: __fill_a(const ::__gnu_debug::_Safe_iterator<_Ite, _Seq, _Cat>&, 900171: const ::__gnu_debug::_Safe_iterator<_Ite, _Seq, _Cat>&, 900171: const _Tp&); 900171: # 988 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algobase.h" 3 900171: template 900171: 900171: inline void 900171: fill(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __value) 900171: { 900171: 900171: 900171: 900171: ; 900171: 900171: std::__fill_a(__first, __last, __value); 900171: } 900171: 900171: 900171: inline constexpr int 900171: __size_to_integer(int __n) { return __n; } 900171: inline constexpr unsigned 900171: __size_to_integer(unsigned __n) { return __n; } 900171: inline constexpr long 900171: __size_to_integer(long __n) { return __n; } 900171: inline constexpr unsigned long 900171: __size_to_integer(unsigned long __n) { return __n; } 900171: inline constexpr long long 900171: __size_to_integer(long long __n) { return __n; } 900171: inline constexpr unsigned long long 900171: __size_to_integer(unsigned long long __n) { return __n; } 900171: # 1040 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algobase.h" 3 900171: inline constexpr long long 900171: __size_to_integer(float __n) { return (long long)__n; } 900171: inline constexpr long long 900171: __size_to_integer(double __n) { return (long long)__n; } 900171: inline constexpr long long 900171: __size_to_integer(long double __n) { return (long long)__n; } 900171: 900171: 900171: 900171: 900171: 900171: template 900171: 900171: inline typename 900171: __gnu_cxx::__enable_if::__value, _OutputIterator>::__type 900171: __fill_n_a1(_OutputIterator __first, _Size __n, const _Tp& __value) 900171: { 900171: for (; __n > 0; --__n, (void) ++__first) 900171: *__first = __value; 900171: return __first; 900171: } 900171: 900171: template 900171: 900171: inline typename 900171: __gnu_cxx::__enable_if<__is_scalar<_Tp>::__value, _OutputIterator>::__type 900171: __fill_n_a1(_OutputIterator __first, _Size __n, const _Tp& __value) 900171: { 900171: const _Tp __tmp = __value; 900171: for (; __n > 0; --__n, (void) ++__first) 900171: *__first = __tmp; 900171: return __first; 900171: } 900171: 900171: template 900171: ::__gnu_debug::_Safe_iterator<_Ite, _Seq, _Cat> 900171: __fill_n_a(const ::__gnu_debug::_Safe_iterator<_Ite, _Seq, _Cat>& __first, 900171: _Size __n, const _Tp& __value, 900171: std::input_iterator_tag); 900171: 900171: template 900171: 900171: inline _OutputIterator 900171: __fill_n_a(_OutputIterator __first, _Size __n, const _Tp& __value, 900171: std::output_iterator_tag) 900171: { 900171: 900171: static_assert(is_integral<_Size>{}, "fill_n must pass integral size"); 900171: 900171: return __fill_n_a1(__first, __n, __value); 900171: } 900171: 900171: template 900171: 900171: inline _OutputIterator 900171: __fill_n_a(_OutputIterator __first, _Size __n, const _Tp& __value, 900171: std::input_iterator_tag) 900171: { 900171: 900171: static_assert(is_integral<_Size>{}, "fill_n must pass integral size"); 900171: 900171: return __fill_n_a1(__first, __n, __value); 900171: } 900171: 900171: template 900171: 900171: inline _OutputIterator 900171: __fill_n_a(_OutputIterator __first, _Size __n, const _Tp& __value, 900171: std::random_access_iterator_tag) 900171: { 900171: 900171: static_assert(is_integral<_Size>{}, "fill_n must pass integral size"); 900171: 900171: if (__n <= 0) 900171: return __first; 900171: 900171: ; 900171: 900171: std::__fill_a(__first, __first + __n, __value); 900171: return __first + __n; 900171: } 900171: # 1140 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algobase.h" 3 900171: template 900171: 900171: inline _OI 900171: fill_n(_OI __first, _Size __n, const _Tp& __value) 900171: { 900171: 900171: 900171: 900171: return std::__fill_n_a(__first, std::__size_to_integer(__n), __value, 900171: std::__iterator_category(__first)); 900171: } 900171: 900171: template 900171: struct __equal 900171: { 900171: template 900171: 900171: static bool 900171: equal(_II1 __first1, _II1 __last1, _II2 __first2) 900171: { 900171: for (; __first1 != __last1; ++__first1, (void) ++__first2) 900171: if (!(*__first1 == *__first2)) 900171: return false; 900171: return true; 900171: } 900171: }; 900171: 900171: template<> 900171: struct __equal 900171: { 900171: template 900171: 900171: static bool 900171: equal(const _Tp* __first1, const _Tp* __last1, const _Tp* __first2) 900171: { 900171: if (const size_t __len = (__last1 - __first1)) 900171: return !std::__memcmp(__first1, __first2, __len); 900171: return true; 900171: } 900171: }; 900171: 900171: template 900171: typename __gnu_cxx::__enable_if< 900171: __is_random_access_iter<_II>::__value, bool>::__type 900171: __equal_aux1(std::_Deque_iterator<_Tp, _Ref, _Ptr>, 900171: std::_Deque_iterator<_Tp, _Ref, _Ptr>, 900171: _II); 900171: 900171: template 900171: bool 900171: __equal_aux1(std::_Deque_iterator<_Tp1, _Ref1, _Ptr1>, 900171: std::_Deque_iterator<_Tp1, _Ref1, _Ptr1>, 900171: std::_Deque_iterator<_Tp2, _Ref2, _Ptr2>); 900171: 900171: template 900171: typename __gnu_cxx::__enable_if< 900171: __is_random_access_iter<_II>::__value, bool>::__type 900171: __equal_aux1(_II, _II, 900171: std::_Deque_iterator<_Tp, _Ref, _Ptr>); 900171: 900171: template 900171: 900171: inline bool 900171: __equal_aux1(_II1 __first1, _II1 __last1, _II2 __first2) 900171: { 900171: typedef typename iterator_traits<_II1>::value_type _ValueType1; 900171: const bool __simple = ((__is_integer<_ValueType1>::__value 900171: || __is_pointer<_ValueType1>::__value) 900171: && __memcmpable<_II1, _II2>::__value); 900171: return std::__equal<__simple>::equal(__first1, __last1, __first2); 900171: } 900171: 900171: template 900171: 900171: inline bool 900171: __equal_aux(_II1 __first1, _II1 __last1, _II2 __first2) 900171: { 900171: return std::__equal_aux1(std::__niter_base(__first1), 900171: std::__niter_base(__last1), 900171: std::__niter_base(__first2)); 900171: } 900171: 900171: template 900171: bool 900171: __equal_aux(const ::__gnu_debug::_Safe_iterator<_II1, _Seq1, _Cat1>&, 900171: const ::__gnu_debug::_Safe_iterator<_II1, _Seq1, _Cat1>&, 900171: _II2); 900171: 900171: template 900171: bool 900171: __equal_aux(_II1, _II1, 900171: const ::__gnu_debug::_Safe_iterator<_II2, _Seq2, _Cat2>&); 900171: 900171: template 900171: bool 900171: __equal_aux(const ::__gnu_debug::_Safe_iterator<_II1, _Seq1, _Cat1>&, 900171: const ::__gnu_debug::_Safe_iterator<_II1, _Seq1, _Cat1>&, 900171: const ::__gnu_debug::_Safe_iterator<_II2, _Seq2, _Cat2>&); 900171: 900171: template 900171: struct __lc_rai 900171: { 900171: template 900171: 900171: static _II1 900171: __newlast1(_II1, _II1 __last1, _II2, _II2) 900171: { return __last1; } 900171: 900171: template 900171: 900171: static bool 900171: __cnd2(_II __first, _II __last) 900171: { return __first != __last; } 900171: }; 900171: 900171: template<> 900171: struct __lc_rai 900171: { 900171: template 900171: 900171: static _RAI1 900171: __newlast1(_RAI1 __first1, _RAI1 __last1, 900171: _RAI2 __first2, _RAI2 __last2) 900171: { 900171: const typename iterator_traits<_RAI1>::difference_type 900171: __diff1 = __last1 - __first1; 900171: const typename iterator_traits<_RAI2>::difference_type 900171: __diff2 = __last2 - __first2; 900171: return __diff2 < __diff1 ? __first1 + __diff2 : __last1; 900171: } 900171: 900171: template 900171: static bool 900171: __cnd2(_RAI, _RAI) 900171: { return true; } 900171: }; 900171: 900171: template 900171: 900171: bool 900171: __lexicographical_compare_impl(_II1 __first1, _II1 __last1, 900171: _II2 __first2, _II2 __last2, 900171: _Compare __comp) 900171: { 900171: typedef typename iterator_traits<_II1>::iterator_category _Category1; 900171: typedef typename iterator_traits<_II2>::iterator_category _Category2; 900171: typedef std::__lc_rai<_Category1, _Category2> __rai_type; 900171: 900171: __last1 = __rai_type::__newlast1(__first1, __last1, __first2, __last2); 900171: for (; __first1 != __last1 && __rai_type::__cnd2(__first2, __last2); 900171: ++__first1, (void)++__first2) 900171: { 900171: if (__comp(__first1, __first2)) 900171: return true; 900171: if (__comp(__first2, __first1)) 900171: return false; 900171: } 900171: return __first1 == __last1 && __first2 != __last2; 900171: } 900171: 900171: template 900171: struct __lexicographical_compare 900171: { 900171: template 900171: 900171: static bool 900171: __lc(_II1 __first1, _II1 __last1, _II2 __first2, _II2 __last2) 900171: { 900171: using __gnu_cxx::__ops::__iter_less_iter; 900171: return std::__lexicographical_compare_impl(__first1, __last1, 900171: __first2, __last2, 900171: __iter_less_iter()); 900171: } 900171: 900171: template 900171: 900171: static int 900171: __3way(_II1 __first1, _II1 __last1, _II2 __first2, _II2 __last2) 900171: { 900171: while (__first1 != __last1) 900171: { 900171: if (__first2 == __last2) 900171: return +1; 900171: if (*__first1 < *__first2) 900171: return -1; 900171: if (*__first2 < *__first1) 900171: return +1; 900171: ++__first1; 900171: ++__first2; 900171: } 900171: return int(__first2 == __last2) - 1; 900171: } 900171: }; 900171: 900171: template<> 900171: struct __lexicographical_compare 900171: { 900171: template 900171: 900171: static bool 900171: __lc(const _Tp* __first1, const _Tp* __last1, 900171: const _Up* __first2, const _Up* __last2) 900171: { return __3way(__first1, __last1, __first2, __last2) < 0; } 900171: 900171: template 900171: 900171: static ptrdiff_t 900171: __3way(const _Tp* __first1, const _Tp* __last1, 900171: const _Up* __first2, const _Up* __last2) 900171: { 900171: const size_t __len1 = __last1 - __first1; 900171: const size_t __len2 = __last2 - __first2; 900171: if (const size_t __len = std::min(__len1, __len2)) 900171: if (int __result = std::__memcmp(__first1, __first2, __len)) 900171: return __result; 900171: return ptrdiff_t(__len1 - __len2); 900171: } 900171: }; 900171: 900171: template 900171: 900171: inline bool 900171: __lexicographical_compare_aux1(_II1 __first1, _II1 __last1, 900171: _II2 __first2, _II2 __last2) 900171: { 900171: typedef typename iterator_traits<_II1>::value_type _ValueType1; 900171: typedef typename iterator_traits<_II2>::value_type _ValueType2; 900171: const bool __simple = 900171: (__is_memcmp_ordered_with<_ValueType1, _ValueType2>::__value 900171: && __is_pointer<_II1>::__value 900171: && __is_pointer<_II2>::__value 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: ); 900171: 900171: return std::__lexicographical_compare<__simple>::__lc(__first1, __last1, 900171: __first2, __last2); 900171: } 900171: 900171: template 900171: bool 900171: __lexicographical_compare_aux1( 900171: std::_Deque_iterator<_Tp1, _Ref1, _Ptr1>, 900171: std::_Deque_iterator<_Tp1, _Ref1, _Ptr1>, 900171: _Tp2*, _Tp2*); 900171: 900171: template 900171: bool 900171: __lexicographical_compare_aux1(_Tp1*, _Tp1*, 900171: std::_Deque_iterator<_Tp2, _Ref2, _Ptr2>, 900171: std::_Deque_iterator<_Tp2, _Ref2, _Ptr2>); 900171: 900171: template 900171: bool 900171: __lexicographical_compare_aux1( 900171: std::_Deque_iterator<_Tp1, _Ref1, _Ptr1>, 900171: std::_Deque_iterator<_Tp1, _Ref1, _Ptr1>, 900171: std::_Deque_iterator<_Tp2, _Ref2, _Ptr2>, 900171: std::_Deque_iterator<_Tp2, _Ref2, _Ptr2>); 900171: 900171: template 900171: 900171: inline bool 900171: __lexicographical_compare_aux(_II1 __first1, _II1 __last1, 900171: _II2 __first2, _II2 __last2) 900171: { 900171: return std::__lexicographical_compare_aux1(std::__niter_base(__first1), 900171: std::__niter_base(__last1), 900171: std::__niter_base(__first2), 900171: std::__niter_base(__last2)); 900171: } 900171: 900171: template 900171: bool 900171: __lexicographical_compare_aux( 900171: const ::__gnu_debug::_Safe_iterator<_Iter1, _Seq1, _Cat1>&, 900171: const ::__gnu_debug::_Safe_iterator<_Iter1, _Seq1, _Cat1>&, 900171: _II2, _II2); 900171: 900171: template 900171: bool 900171: __lexicographical_compare_aux( 900171: _II1, _II1, 900171: const ::__gnu_debug::_Safe_iterator<_Iter2, _Seq2, _Cat2>&, 900171: const ::__gnu_debug::_Safe_iterator<_Iter2, _Seq2, _Cat2>&); 900171: 900171: template 900171: bool 900171: __lexicographical_compare_aux( 900171: const ::__gnu_debug::_Safe_iterator<_Iter1, _Seq1, _Cat1>&, 900171: const ::__gnu_debug::_Safe_iterator<_Iter1, _Seq1, _Cat1>&, 900171: const ::__gnu_debug::_Safe_iterator<_Iter2, _Seq2, _Cat2>&, 900171: const ::__gnu_debug::_Safe_iterator<_Iter2, _Seq2, _Cat2>&); 900171: 900171: template 900171: 900171: _ForwardIterator 900171: __lower_bound(_ForwardIterator __first, _ForwardIterator __last, 900171: const _Tp& __val, _Compare __comp) 900171: { 900171: typedef typename iterator_traits<_ForwardIterator>::difference_type 900171: _DistanceType; 900171: 900171: _DistanceType __len = std::distance(__first, __last); 900171: 900171: while (__len > 0) 900171: { 900171: _DistanceType __half = __len >> 1; 900171: _ForwardIterator __middle = __first; 900171: std::advance(__middle, __half); 900171: if (__comp(__middle, __val)) 900171: { 900171: __first = __middle; 900171: ++__first; 900171: __len = __len - __half - 1; 900171: } 900171: else 900171: __len = __half; 900171: } 900171: return __first; 900171: } 900171: # 1486 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algobase.h" 3 900171: template 900171: 900171: inline _ForwardIterator 900171: lower_bound(_ForwardIterator __first, _ForwardIterator __last, 900171: const _Tp& __val) 900171: { 900171: 900171: 900171: 900171: 900171: ; 900171: 900171: return std::__lower_bound(__first, __last, __val, 900171: __gnu_cxx::__ops::__iter_less_val()); 900171: } 900171: 900171: 900171: 900171: inline constexpr int 900171: __lg(int __n) 900171: { return (int)sizeof(int) * 8 - 1 - __builtin_clz(__n); } 900171: 900171: inline constexpr unsigned 900171: __lg(unsigned __n) 900171: { return (int)sizeof(int) * 8 - 1 - __builtin_clz(__n); } 900171: 900171: inline constexpr long 900171: __lg(long __n) 900171: { return (int)sizeof(long) * 8 - 1 - __builtin_clzl(__n); } 900171: 900171: inline constexpr unsigned long 900171: __lg(unsigned long __n) 900171: { return (int)sizeof(long) * 8 - 1 - __builtin_clzl(__n); } 900171: 900171: inline constexpr long long 900171: __lg(long long __n) 900171: { return (int)sizeof(long long) * 8 - 1 - __builtin_clzll(__n); } 900171: 900171: inline constexpr unsigned long long 900171: __lg(unsigned long long __n) 900171: { return (int)sizeof(long long) * 8 - 1 - __builtin_clzll(__n); } 900171: 900171: 900171: # 1542 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algobase.h" 3 900171: template 900171: 900171: inline bool 900171: equal(_II1 __first1, _II1 __last1, _II2 __first2) 900171: { 900171: 900171: 900171: 900171: 900171: 900171: 900171: ; 900171: 900171: return std::__equal_aux(__first1, __last1, __first2); 900171: } 900171: # 1573 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algobase.h" 3 900171: template 900171: 900171: inline bool 900171: equal(_IIter1 __first1, _IIter1 __last1, 900171: _IIter2 __first2, _BinaryPredicate __binary_pred) 900171: { 900171: 900171: 900171: 900171: ; 900171: 900171: for (; __first1 != __last1; ++__first1, (void)++__first2) 900171: if (!bool(__binary_pred(*__first1, *__first2))) 900171: return false; 900171: return true; 900171: } 900171: 900171: 900171: 900171: template 900171: 900171: inline bool 900171: __equal4(_II1 __first1, _II1 __last1, _II2 __first2, _II2 __last2) 900171: { 900171: using _RATag = random_access_iterator_tag; 900171: using _Cat1 = typename iterator_traits<_II1>::iterator_category; 900171: using _Cat2 = typename iterator_traits<_II2>::iterator_category; 900171: using _RAIters = __and_, is_same<_Cat2, _RATag>>; 900171: if (_RAIters()) 900171: { 900171: auto __d1 = std::distance(__first1, __last1); 900171: auto __d2 = std::distance(__first2, __last2); 900171: if (__d1 != __d2) 900171: return false; 900171: return std::equal(__first1, __last1, __first2); 900171: } 900171: 900171: for (; __first1 != __last1 && __first2 != __last2; 900171: ++__first1, (void)++__first2) 900171: if (!(*__first1 == *__first2)) 900171: return false; 900171: return __first1 == __last1 && __first2 == __last2; 900171: } 900171: 900171: 900171: template 900171: 900171: inline bool 900171: __equal4(_II1 __first1, _II1 __last1, _II2 __first2, _II2 __last2, 900171: _BinaryPredicate __binary_pred) 900171: { 900171: using _RATag = random_access_iterator_tag; 900171: using _Cat1 = typename iterator_traits<_II1>::iterator_category; 900171: using _Cat2 = typename iterator_traits<_II2>::iterator_category; 900171: using _RAIters = __and_, is_same<_Cat2, _RATag>>; 900171: if (_RAIters()) 900171: { 900171: auto __d1 = std::distance(__first1, __last1); 900171: auto __d2 = std::distance(__first2, __last2); 900171: if (__d1 != __d2) 900171: return false; 900171: return std::equal(__first1, __last1, __first2, 900171: __binary_pred); 900171: } 900171: 900171: for (; __first1 != __last1 && __first2 != __last2; 900171: ++__first1, (void)++__first2) 900171: if (!bool(__binary_pred(*__first1, *__first2))) 900171: return false; 900171: return __first1 == __last1 && __first2 == __last2; 900171: } 900171: # 1728 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algobase.h" 3 900171: template 900171: 900171: inline bool 900171: lexicographical_compare(_II1 __first1, _II1 __last1, 900171: _II2 __first2, _II2 __last2) 900171: { 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: ; 900171: ; 900171: 900171: return std::__lexicographical_compare_aux(__first1, __last1, 900171: __first2, __last2); 900171: } 900171: # 1763 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algobase.h" 3 900171: template 900171: 900171: inline bool 900171: lexicographical_compare(_II1 __first1, _II1 __last1, 900171: _II2 __first2, _II2 __last2, _Compare __comp) 900171: { 900171: 900171: 900171: 900171: ; 900171: ; 900171: 900171: return std::__lexicographical_compare_impl 900171: (__first1, __last1, __first2, __last2, 900171: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 900171: } 900171: # 1875 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algobase.h" 3 900171: template 900171: 900171: pair<_InputIterator1, _InputIterator2> 900171: __mismatch(_InputIterator1 __first1, _InputIterator1 __last1, 900171: _InputIterator2 __first2, _BinaryPredicate __binary_pred) 900171: { 900171: while (__first1 != __last1 && __binary_pred(__first1, __first2)) 900171: { 900171: ++__first1; 900171: ++__first2; 900171: } 900171: return pair<_InputIterator1, _InputIterator2>(__first1, __first2); 900171: } 900171: # 1903 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algobase.h" 3 900171: template 900171: 900171: inline pair<_InputIterator1, _InputIterator2> 900171: mismatch(_InputIterator1 __first1, _InputIterator1 __last1, 900171: _InputIterator2 __first2) 900171: { 900171: 900171: 900171: 900171: 900171: 900171: 900171: ; 900171: 900171: return std::__mismatch(__first1, __last1, __first2, 900171: __gnu_cxx::__ops::__iter_equal_to_iter()); 900171: } 900171: # 1937 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algobase.h" 3 900171: template 900171: 900171: inline pair<_InputIterator1, _InputIterator2> 900171: mismatch(_InputIterator1 __first1, _InputIterator1 __last1, 900171: _InputIterator2 __first2, _BinaryPredicate __binary_pred) 900171: { 900171: 900171: 900171: 900171: ; 900171: 900171: return std::__mismatch(__first1, __last1, __first2, 900171: __gnu_cxx::__ops::__iter_comp_iter(__binary_pred)); 900171: } 900171: # 2041 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algobase.h" 3 900171: 900171: 900171: 900171: template 900171: 900171: inline _InputIterator 900171: __find_if(_InputIterator __first, _InputIterator __last, 900171: _Predicate __pred, input_iterator_tag) 900171: { 900171: while (__first != __last && !__pred(__first)) 900171: ++__first; 900171: return __first; 900171: } 900171: 900171: 900171: template 900171: 900171: _RandomAccessIterator 900171: __find_if(_RandomAccessIterator __first, _RandomAccessIterator __last, 900171: _Predicate __pred, random_access_iterator_tag) 900171: { 900171: typename iterator_traits<_RandomAccessIterator>::difference_type 900171: __trip_count = (__last - __first) >> 2; 900171: 900171: for (; __trip_count > 0; --__trip_count) 900171: { 900171: if (__pred(__first)) 900171: return __first; 900171: ++__first; 900171: 900171: if (__pred(__first)) 900171: return __first; 900171: ++__first; 900171: 900171: if (__pred(__first)) 900171: return __first; 900171: ++__first; 900171: 900171: if (__pred(__first)) 900171: return __first; 900171: ++__first; 900171: } 900171: 900171: switch (__last - __first) 900171: { 900171: case 3: 900171: if (__pred(__first)) 900171: return __first; 900171: ++__first; 900171: 900171: case 2: 900171: if (__pred(__first)) 900171: return __first; 900171: ++__first; 900171: 900171: case 1: 900171: if (__pred(__first)) 900171: return __first; 900171: ++__first; 900171: 900171: case 0: 900171: default: 900171: return __last; 900171: } 900171: } 900171: 900171: template 900171: 900171: inline _Iterator 900171: __find_if(_Iterator __first, _Iterator __last, _Predicate __pred) 900171: { 900171: return __find_if(__first, __last, __pred, 900171: std::__iterator_category(__first)); 900171: } 900171: 900171: template 900171: 900171: typename iterator_traits<_InputIterator>::difference_type 900171: __count_if(_InputIterator __first, _InputIterator __last, _Predicate __pred) 900171: { 900171: typename iterator_traits<_InputIterator>::difference_type __n = 0; 900171: for (; __first != __last; ++__first) 900171: if (__pred(__first)) 900171: ++__n; 900171: return __n; 900171: } 900171: 900171: template 900171: 900171: _ForwardIterator 900171: __remove_if(_ForwardIterator __first, _ForwardIterator __last, 900171: _Predicate __pred) 900171: { 900171: __first = std::__find_if(__first, __last, __pred); 900171: if (__first == __last) 900171: return __first; 900171: _ForwardIterator __result = __first; 900171: ++__first; 900171: for (; __first != __last; ++__first) 900171: if (!__pred(__first)) 900171: { 900171: *__result = std::move(*__first); 900171: ++__result; 900171: } 900171: return __result; 900171: } 900171: 900171: 900171: template 900171: 900171: bool 900171: __is_permutation(_ForwardIterator1 __first1, _ForwardIterator1 __last1, 900171: _ForwardIterator2 __first2, _BinaryPredicate __pred) 900171: { 900171: 900171: 900171: for (; __first1 != __last1; ++__first1, (void)++__first2) 900171: if (!__pred(__first1, __first2)) 900171: break; 900171: 900171: if (__first1 == __last1) 900171: return true; 900171: 900171: 900171: 900171: _ForwardIterator2 __last2 = __first2; 900171: std::advance(__last2, std::distance(__first1, __last1)); 900171: for (_ForwardIterator1 __scan = __first1; __scan != __last1; ++__scan) 900171: { 900171: if (__scan != std::__find_if(__first1, __scan, 900171: __gnu_cxx::__ops::__iter_comp_iter(__pred, __scan))) 900171: continue; 900171: 900171: auto __matches 900171: = std::__count_if(__first2, __last2, 900171: __gnu_cxx::__ops::__iter_comp_iter(__pred, __scan)); 900171: if (0 == __matches || 900171: std::__count_if(__scan, __last1, 900171: __gnu_cxx::__ops::__iter_comp_iter(__pred, __scan)) 900171: != __matches) 900171: return false; 900171: } 900171: return true; 900171: } 900171: # 2199 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algobase.h" 3 900171: template 900171: 900171: inline bool 900171: is_permutation(_ForwardIterator1 __first1, _ForwardIterator1 __last1, 900171: _ForwardIterator2 __first2) 900171: { 900171: 900171: 900171: 900171: 900171: 900171: 900171: ; 900171: 900171: return std::__is_permutation(__first1, __last1, __first2, 900171: __gnu_cxx::__ops::__iter_equal_to_iter()); 900171: } 900171: 900171: 900171: 900171: } 900171: # 64 "/usr/aarch64-linux-gnu/include/c++/12/memory" 2 3 900171: # 1 "/usr/aarch64-linux-gnu/include/c++/12/bits/allocator.h" 1 3 900171: # 46 "/usr/aarch64-linux-gnu/include/c++/12/bits/allocator.h" 3 900171: # 1 "/usr/aarch64-linux-gnu/include/c++/12/aarch64-linux-gnu/bits/c++allocator.h" 1 3 900171: # 33 "/usr/aarch64-linux-gnu/include/c++/12/aarch64-linux-gnu/bits/c++allocator.h" 3 900171: # 1 "/usr/aarch64-linux-gnu/include/c++/12/bits/new_allocator.h" 1 3 900171: # 34 "/usr/aarch64-linux-gnu/include/c++/12/bits/new_allocator.h" 3 900171: # 1 "/usr/aarch64-linux-gnu/include/c++/12/new" 1 3 900171: # 38 "/usr/aarch64-linux-gnu/include/c++/12/new" 3 900171: 900171: # 39 "/usr/aarch64-linux-gnu/include/c++/12/new" 3 900171: 900171: 900171: # 1 "/usr/aarch64-linux-gnu/include/c++/12/bits/exception.h" 1 3 900171: # 34 "/usr/aarch64-linux-gnu/include/c++/12/bits/exception.h" 3 900171: 900171: # 35 "/usr/aarch64-linux-gnu/include/c++/12/bits/exception.h" 3 900171: 900171: #pragma GCC visibility push(default) 900171: 900171: 900171: 900171: extern "C++" { 900171: 900171: namespace std 900171: { 900171: # 61 "/usr/aarch64-linux-gnu/include/c++/12/bits/exception.h" 3 900171: class exception 900171: { 900171: public: 900171: exception() noexcept { } 900171: virtual ~exception() noexcept; 900171: 900171: exception(const exception&) = default; 900171: exception& operator=(const exception&) = default; 900171: exception(exception&&) = default; 900171: exception& operator=(exception&&) = default; 900171: 900171: 900171: 900171: 900171: virtual const char* 900171: what() const noexcept; 900171: }; 900171: 900171: 900171: 900171: } 900171: 900171: } 900171: 900171: #pragma GCC visibility pop 900171: # 42 "/usr/aarch64-linux-gnu/include/c++/12/new" 2 3 900171: 900171: #pragma GCC visibility push(default) 900171: 900171: extern "C++" { 900171: 900171: namespace std 900171: { 900171: 900171: 900171: 900171: 900171: 900171: 900171: class bad_alloc : public exception 900171: { 900171: public: 900171: bad_alloc() throw() { } 900171: 900171: 900171: bad_alloc(const bad_alloc&) = default; 900171: bad_alloc& operator=(const bad_alloc&) = default; 900171: 900171: 900171: 900171: 900171: virtual ~bad_alloc() throw(); 900171: 900171: 900171: virtual const char* what() const throw(); 900171: }; 900171: 900171: 900171: class bad_array_new_length : public bad_alloc 900171: { 900171: public: 900171: bad_array_new_length() throw() { } 900171: 900171: 900171: 900171: virtual ~bad_array_new_length() throw(); 900171: 900171: 900171: virtual const char* what() const throw(); 900171: }; 900171: 900171: 900171: 900171: 900171: 900171: 900171: struct nothrow_t 900171: { 900171: 900171: explicit nothrow_t() = default; 900171: 900171: }; 900171: 900171: extern const nothrow_t nothrow; 900171: 900171: 900171: 900171: typedef void (*new_handler)(); 900171: 900171: 900171: 900171: new_handler set_new_handler(new_handler) throw(); 900171: 900171: 900171: 900171: new_handler get_new_handler() noexcept; 900171: 900171: } 900171: # 126 "/usr/aarch64-linux-gnu/include/c++/12/new" 3 900171: void* operator new(std::size_t) 900171: __attribute__((__externally_visible__)); 900171: void* operator new[](std::size_t) 900171: __attribute__((__externally_visible__)); 900171: void operator delete(void*) noexcept 900171: __attribute__((__externally_visible__)); 900171: void operator delete[](void*) noexcept 900171: __attribute__((__externally_visible__)); 900171: 900171: 900171: 900171: 900171: 900171: 900171: void* operator new(std::size_t, const std::nothrow_t&) noexcept 900171: __attribute__((__externally_visible__, __alloc_size__ (1), __malloc__)); 900171: void* operator new[](std::size_t, const std::nothrow_t&) noexcept 900171: __attribute__((__externally_visible__, __alloc_size__ (1), __malloc__)); 900171: void operator delete(void*, const std::nothrow_t&) noexcept 900171: __attribute__((__externally_visible__)); 900171: void operator delete[](void*, const std::nothrow_t&) noexcept 900171: __attribute__((__externally_visible__)); 900171: # 174 "/usr/aarch64-linux-gnu/include/c++/12/new" 3 900171: inline void* operator new(std::size_t, void* __p) noexcept 900171: { return __p; } 900171: inline void* operator new[](std::size_t, void* __p) noexcept 900171: { return __p; } 900171: 900171: 900171: inline void operator delete (void*, void*) noexcept { } 900171: inline void operator delete[](void*, void*) noexcept { } 900171: 900171: } 900171: # 236 "/usr/aarch64-linux-gnu/include/c++/12/new" 3 900171: #pragma GCC visibility pop 900171: # 35 "/usr/aarch64-linux-gnu/include/c++/12/bits/new_allocator.h" 2 3 900171: 900171: 900171: 900171: 900171: 900171: 900171: namespace std __attribute__ ((__visibility__ ("default"))) 900171: { 900171: 900171: # 55 "/usr/aarch64-linux-gnu/include/c++/12/bits/new_allocator.h" 3 900171: template 900171: class __new_allocator 900171: { 900171: public: 900171: typedef _Tp value_type; 900171: typedef std::size_t size_type; 900171: typedef std::ptrdiff_t difference_type; 900171: 900171: typedef _Tp* pointer; 900171: typedef const _Tp* const_pointer; 900171: typedef _Tp& reference; 900171: typedef const _Tp& const_reference; 900171: 900171: template 900171: struct rebind 900171: { typedef __new_allocator<_Tp1> other; }; 900171: 900171: 900171: 900171: 900171: 900171: typedef std::true_type propagate_on_container_move_assignment; 900171: 900171: 900171: 900171: __new_allocator() noexcept { } 900171: 900171: 900171: __new_allocator(const __new_allocator&) noexcept { } 900171: 900171: template 900171: 900171: __new_allocator(const __new_allocator<_Tp1>&) noexcept { } 900171: 900171: 900171: ~__new_allocator() noexcept { } 900171: 900171: pointer 900171: address(reference __x) const noexcept 900171: { return std::__addressof(__x); } 900171: 900171: const_pointer 900171: address(const_reference __x) const noexcept 900171: { return std::__addressof(__x); } 900171: # 111 "/usr/aarch64-linux-gnu/include/c++/12/bits/new_allocator.h" 3 900171: _Tp* 900171: allocate(size_type __n, const void* = static_cast(0)) 900171: { 900171: 900171: 900171: 900171: static_assert(sizeof(_Tp) != 0, "cannot allocate incomplete types"); 900171: 900171: 900171: if (__builtin_expect(__n > this->_M_max_size(), false)) 900171: { 900171: 900171: 900171: if (__n > (std::size_t(-1) / sizeof(_Tp))) 900171: std::__throw_bad_array_new_length(); 900171: std::__throw_bad_alloc(); 900171: } 900171: # 137 "/usr/aarch64-linux-gnu/include/c++/12/bits/new_allocator.h" 3 900171: return static_cast<_Tp*>(::operator new(__n * sizeof(_Tp))); 900171: } 900171: 900171: 900171: void 900171: deallocate(_Tp* __p, size_type __n __attribute__ ((__unused__))) 900171: { 900171: # 158 "/usr/aarch64-linux-gnu/include/c++/12/bits/new_allocator.h" 3 900171: ::operator delete((__p)); 900171: } 900171: 900171: 900171: 900171: 900171: 900171: 900171: size_type 900171: max_size() const noexcept 900171: { return _M_max_size(); } 900171: 900171: 900171: template 900171: void 900171: construct(_Up* __p, _Args&&... __args) 900171: noexcept(std::is_nothrow_constructible<_Up, _Args...>::value) 900171: { ::new((void *)__p) _Up(std::forward<_Args>(__args)...); } 900171: 900171: template 900171: void 900171: destroy(_Up* __p) 900171: noexcept(std::is_nothrow_destructible<_Up>::value) 900171: { __p->~_Up(); } 900171: # 194 "/usr/aarch64-linux-gnu/include/c++/12/bits/new_allocator.h" 3 900171: template 900171: friend bool 900171: operator==(const __new_allocator&, const __new_allocator<_Up>&) 900171: noexcept 900171: { return true; } 900171: 900171: 900171: template 900171: friend bool 900171: operator!=(const __new_allocator&, const __new_allocator<_Up>&) 900171: noexcept 900171: { return false; } 900171: 900171: 900171: private: 900171: constexpr size_type 900171: _M_max_size() const noexcept 900171: { 900171: 900171: return std::size_t(0x7fffffffffffffffL) / sizeof(_Tp); 900171: 900171: 900171: 900171: } 900171: }; 900171: 900171: 900171: } 900171: # 34 "/usr/aarch64-linux-gnu/include/c++/12/aarch64-linux-gnu/bits/c++allocator.h" 2 3 900171: 900171: 900171: namespace std 900171: { 900171: # 46 "/usr/aarch64-linux-gnu/include/c++/12/aarch64-linux-gnu/bits/c++allocator.h" 3 900171: template 900171: using __allocator_base = __new_allocator<_Tp>; 900171: } 900171: # 47 "/usr/aarch64-linux-gnu/include/c++/12/bits/allocator.h" 2 3 900171: # 1 "/usr/aarch64-linux-gnu/include/c++/12/bits/memoryfwd.h" 1 3 900171: # 46 "/usr/aarch64-linux-gnu/include/c++/12/bits/memoryfwd.h" 3 900171: 900171: # 47 "/usr/aarch64-linux-gnu/include/c++/12/bits/memoryfwd.h" 3 900171: 900171: 900171: 900171: namespace std __attribute__ ((__visibility__ ("default"))) 900171: { 900171: 900171: # 63 "/usr/aarch64-linux-gnu/include/c++/12/bits/memoryfwd.h" 3 900171: template 900171: class allocator; 900171: 900171: template<> 900171: class allocator; 900171: 900171: 900171: 900171: template 900171: struct uses_allocator; 900171: 900171: template 900171: struct allocator_traits; 900171: 900171: 900171: 900171: 900171: 900171: } 900171: # 48 "/usr/aarch64-linux-gnu/include/c++/12/bits/allocator.h" 2 3 900171: 900171: 900171: 900171: 900171: 900171: 900171: namespace std __attribute__ ((__visibility__ ("default"))) 900171: { 900171: 900171: # 71 "/usr/aarch64-linux-gnu/include/c++/12/bits/allocator.h" 3 900171: template<> 900171: class allocator 900171: { 900171: public: 900171: typedef void value_type; 900171: typedef size_t size_type; 900171: typedef ptrdiff_t difference_type; 900171: 900171: 900171: 900171: typedef void* pointer; 900171: typedef const void* const_pointer; 900171: 900171: template 900171: struct rebind 900171: { typedef allocator<_Tp1> other; }; 900171: 900171: 900171: 900171: 900171: 900171: using propagate_on_container_move_assignment = true_type; 900171: 900171: using is_always_equal 900171: 900171: = true_type; 900171: # 113 "/usr/aarch64-linux-gnu/include/c++/12/bits/allocator.h" 3 900171: }; 900171: # 123 "/usr/aarch64-linux-gnu/include/c++/12/bits/allocator.h" 3 900171: template 900171: class allocator : public __allocator_base<_Tp> 900171: { 900171: public: 900171: typedef _Tp value_type; 900171: typedef size_t size_type; 900171: typedef ptrdiff_t difference_type; 900171: 900171: 900171: 900171: typedef _Tp* pointer; 900171: typedef const _Tp* const_pointer; 900171: typedef _Tp& reference; 900171: typedef const _Tp& const_reference; 900171: 900171: template 900171: struct rebind 900171: { typedef allocator<_Tp1> other; }; 900171: 900171: 900171: 900171: 900171: 900171: using propagate_on_container_move_assignment = true_type; 900171: 900171: using is_always_equal 900171: 900171: = true_type; 900171: 900171: 900171: 900171: 900171: 900171: allocator() noexcept { } 900171: 900171: 900171: allocator(const allocator& __a) noexcept 900171: : __allocator_base<_Tp>(__a) { } 900171: 900171: 900171: 900171: allocator& operator=(const allocator&) = default; 900171: 900171: 900171: template 900171: 900171: allocator(const allocator<_Tp1>&) noexcept { } 900171: 900171: 900171: 900171: 900171: ~allocator() noexcept { } 900171: # 204 "/usr/aarch64-linux-gnu/include/c++/12/bits/allocator.h" 3 900171: friend bool 900171: operator==(const allocator&, const allocator&) noexcept 900171: { return true; } 900171: 900171: 900171: friend bool 900171: operator!=(const allocator&, const allocator&) noexcept 900171: { return false; } 900171: 900171: 900171: 900171: }; 900171: 900171: template 900171: inline bool 900171: operator==(const allocator<_T1>&, const allocator<_T2>&) 900171: noexcept 900171: { return true; } 900171: 900171: 900171: template 900171: inline bool 900171: operator!=(const allocator<_T1>&, const allocator<_T2>&) 900171: noexcept 900171: { return false; } 900171: 900171: 900171: 900171: 900171: template 900171: class allocator 900171: { 900171: public: 900171: typedef _Tp value_type; 900171: template allocator(const allocator<_Up>&) { } 900171: }; 900171: 900171: template 900171: class allocator 900171: { 900171: public: 900171: typedef _Tp value_type; 900171: template allocator(const allocator<_Up>&) { } 900171: }; 900171: 900171: template 900171: class allocator 900171: { 900171: public: 900171: typedef _Tp value_type; 900171: template allocator(const allocator<_Up>&) { } 900171: }; 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern template class allocator; 900171: extern template class allocator; 900171: 900171: 900171: 900171: 900171: 900171: 900171: template 900171: struct __alloc_swap 900171: { static void _S_do_it(_Alloc&, _Alloc&) noexcept { } }; 900171: 900171: template 900171: struct __alloc_swap<_Alloc, false> 900171: { 900171: static void 900171: _S_do_it(_Alloc& __one, _Alloc& __two) noexcept 900171: { 900171: 900171: if (__one != __two) 900171: swap(__one, __two); 900171: } 900171: }; 900171: 900171: 900171: template 900171: struct __alloc_neq 900171: { 900171: static bool 900171: _S_do_it(const _Alloc&, const _Alloc&) 900171: { return false; } 900171: }; 900171: 900171: template 900171: struct __alloc_neq<_Alloc, false> 900171: { 900171: static bool 900171: _S_do_it(const _Alloc& __one, const _Alloc& __two) 900171: { return __one != __two; } 900171: }; 900171: 900171: 900171: template, 900171: is_nothrow_move_constructible>::value> 900171: struct __shrink_to_fit_aux 900171: { static bool _S_do_it(_Tp&) noexcept { return false; } }; 900171: 900171: template 900171: struct __shrink_to_fit_aux<_Tp, true> 900171: { 900171: 900171: static bool 900171: _S_do_it(_Tp& __c) noexcept 900171: { 900171: 900171: try 900171: { 900171: _Tp(__make_move_if_noexcept_iterator(__c.begin()), 900171: __make_move_if_noexcept_iterator(__c.end()), 900171: __c.get_allocator()).swap(__c); 900171: return true; 900171: } 900171: catch(...) 900171: { return false; } 900171: 900171: 900171: 900171: } 900171: }; 900171: 900171: 900171: 900171: } 900171: # 65 "/usr/aarch64-linux-gnu/include/c++/12/memory" 2 3 900171: # 1 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_construct.h" 1 3 900171: # 73 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_construct.h" 3 900171: namespace std __attribute__ ((__visibility__ ("default"))) 900171: { 900171: 900171: # 106 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_construct.h" 3 900171: template 900171: 900171: inline void 900171: _Construct(_Tp* __p, _Args&&... __args) 900171: { 900171: # 119 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_construct.h" 3 900171: ::new((void*)__p) _Tp(std::forward<_Args>(__args)...); 900171: } 900171: # 132 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_construct.h" 3 900171: template 900171: inline void 900171: _Construct_novalue(_T1* __p) 900171: { ::new((void*)__p) _T1; } 900171: 900171: template 900171: void 900171: _Destroy(_ForwardIterator __first, _ForwardIterator __last); 900171: 900171: 900171: 900171: 900171: template 900171: inline void 900171: _Destroy(_Tp* __pointer) 900171: { 900171: 900171: 900171: 900171: __pointer->~_Tp(); 900171: 900171: } 900171: 900171: template 900171: struct _Destroy_aux 900171: { 900171: template 900171: static void 900171: __destroy(_ForwardIterator __first, _ForwardIterator __last) 900171: { 900171: for (; __first != __last; ++__first) 900171: std::_Destroy(std::__addressof(*__first)); 900171: } 900171: }; 900171: 900171: template<> 900171: struct _Destroy_aux 900171: { 900171: template 900171: static void 900171: __destroy(_ForwardIterator, _ForwardIterator) { } 900171: }; 900171: 900171: 900171: 900171: 900171: 900171: 900171: template 900171: inline void 900171: _Destroy(_ForwardIterator __first, _ForwardIterator __last) 900171: { 900171: typedef typename iterator_traits<_ForwardIterator>::value_type 900171: _Value_type; 900171: 900171: 900171: static_assert(is_destructible<_Value_type>::value, 900171: "value type is destructible"); 900171: 900171: 900171: 900171: 900171: 900171: std::_Destroy_aux<__has_trivial_destructor(_Value_type)>:: 900171: __destroy(__first, __last); 900171: } 900171: 900171: template 900171: struct _Destroy_n_aux 900171: { 900171: template 900171: static _ForwardIterator 900171: __destroy_n(_ForwardIterator __first, _Size __count) 900171: { 900171: for (; __count > 0; (void)++__first, --__count) 900171: std::_Destroy(std::__addressof(*__first)); 900171: return __first; 900171: } 900171: }; 900171: 900171: template<> 900171: struct _Destroy_n_aux 900171: { 900171: template 900171: static _ForwardIterator 900171: __destroy_n(_ForwardIterator __first, _Size __count) 900171: { 900171: std::advance(__first, __count); 900171: return __first; 900171: } 900171: }; 900171: 900171: 900171: 900171: 900171: 900171: 900171: template 900171: inline _ForwardIterator 900171: _Destroy_n(_ForwardIterator __first, _Size __count) 900171: { 900171: typedef typename iterator_traits<_ForwardIterator>::value_type 900171: _Value_type; 900171: 900171: 900171: static_assert(is_destructible<_Value_type>::value, 900171: "value type is destructible"); 900171: 900171: 900171: 900171: 900171: 900171: return std::_Destroy_n_aux<__has_trivial_destructor(_Value_type)>:: 900171: __destroy_n(__first, __count); 900171: } 900171: # 264 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_construct.h" 3 900171: 900171: } 900171: # 66 "/usr/aarch64-linux-gnu/include/c++/12/memory" 2 3 900171: # 1 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_uninitialized.h" 1 3 900171: # 64 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_uninitialized.h" 3 900171: # 1 "/usr/aarch64-linux-gnu/include/c++/12/ext/alloc_traits.h" 1 3 900171: # 32 "/usr/aarch64-linux-gnu/include/c++/12/ext/alloc_traits.h" 3 900171: 900171: # 33 "/usr/aarch64-linux-gnu/include/c++/12/ext/alloc_traits.h" 3 900171: 900171: # 1 "/usr/aarch64-linux-gnu/include/c++/12/bits/alloc_traits.h" 1 3 900171: # 41 "/usr/aarch64-linux-gnu/include/c++/12/bits/alloc_traits.h" 3 900171: namespace std __attribute__ ((__visibility__ ("default"))) 900171: { 900171: 900171: 900171: 900171: 900171: 900171: 900171: struct __allocator_traits_base 900171: { 900171: template 900171: struct __rebind : __replace_first_arg<_Tp, _Up> { }; 900171: 900171: template 900171: struct __rebind<_Tp, _Up, 900171: __void_t::other>> 900171: { using type = typename _Tp::template rebind<_Up>::other; }; 900171: 900171: protected: 900171: template 900171: using __pointer = typename _Tp::pointer; 900171: template 900171: using __c_pointer = typename _Tp::const_pointer; 900171: template 900171: using __v_pointer = typename _Tp::void_pointer; 900171: template 900171: using __cv_pointer = typename _Tp::const_void_pointer; 900171: template 900171: using __pocca = typename _Tp::propagate_on_container_copy_assignment; 900171: template 900171: using __pocma = typename _Tp::propagate_on_container_move_assignment; 900171: template 900171: using __pocs = typename _Tp::propagate_on_container_swap; 900171: template 900171: using __equal = typename _Tp::is_always_equal; 900171: }; 900171: 900171: template 900171: using __alloc_rebind 900171: = typename __allocator_traits_base::template __rebind<_Alloc, _Up>::type; 900171: # 89 "/usr/aarch64-linux-gnu/include/c++/12/bits/alloc_traits.h" 3 900171: template 900171: struct allocator_traits : __allocator_traits_base 900171: { 900171: 900171: typedef _Alloc allocator_type; 900171: 900171: typedef typename _Alloc::value_type value_type; 900171: 900171: 900171: 900171: 900171: 900171: 900171: using pointer = __detected_or_t; 900171: 900171: private: 900171: 900171: template class _Func, typename _Tp, typename = void> 900171: struct _Ptr 900171: { 900171: using type = typename pointer_traits::template rebind<_Tp>; 900171: }; 900171: 900171: template class _Func, typename _Tp> 900171: struct _Ptr<_Func, _Tp, __void_t<_Func<_Alloc>>> 900171: { 900171: using type = _Func<_Alloc>; 900171: }; 900171: 900171: 900171: template 900171: struct _Diff 900171: { using type = typename pointer_traits<_PtrT>::difference_type; }; 900171: 900171: template 900171: struct _Diff<_A2, _PtrT, __void_t> 900171: { using type = typename _A2::difference_type; }; 900171: 900171: 900171: template 900171: struct _Size : make_unsigned<_DiffT> { }; 900171: 900171: template 900171: struct _Size<_A2, _DiffT, __void_t> 900171: { using type = typename _A2::size_type; }; 900171: 900171: public: 900171: 900171: 900171: 900171: 900171: 900171: 900171: using const_pointer = typename _Ptr<__c_pointer, const value_type>::type; 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: using void_pointer = typename _Ptr<__v_pointer, void>::type; 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: using const_void_pointer = typename _Ptr<__cv_pointer, const void>::type; 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: using difference_type = typename _Diff<_Alloc, pointer>::type; 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: using size_type = typename _Size<_Alloc, difference_type>::type; 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: using propagate_on_container_copy_assignment 900171: = __detected_or_t; 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: using propagate_on_container_move_assignment 900171: = __detected_or_t; 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: using propagate_on_container_swap 900171: = __detected_or_t; 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: using is_always_equal 900171: = __detected_or_t::type, __equal, _Alloc>; 900171: 900171: template 900171: using rebind_alloc = __alloc_rebind<_Alloc, _Tp>; 900171: template 900171: using rebind_traits = allocator_traits>; 900171: 900171: private: 900171: template 900171: static constexpr auto 900171: _S_allocate(_Alloc2& __a, size_type __n, const_void_pointer __hint, int) 900171: -> decltype(__a.allocate(__n, __hint)) 900171: { return __a.allocate(__n, __hint); } 900171: 900171: template 900171: static constexpr pointer 900171: _S_allocate(_Alloc2& __a, size_type __n, const_void_pointer, ...) 900171: { return __a.allocate(__n); } 900171: 900171: template 900171: struct __construct_helper 900171: { 900171: template()->construct( 900171: std::declval<_Tp*>(), std::declval<_Args>()...))> 900171: static true_type __test(int); 900171: 900171: template 900171: static false_type __test(...); 900171: 900171: using type = decltype(__test<_Alloc>(0)); 900171: }; 900171: 900171: template 900171: using __has_construct 900171: = typename __construct_helper<_Tp, _Args...>::type; 900171: 900171: template 900171: static _Require<__has_construct<_Tp, _Args...>> 900171: _S_construct(_Alloc& __a, _Tp* __p, _Args&&... __args) 900171: noexcept(noexcept(__a.construct(__p, std::forward<_Args>(__args)...))) 900171: { __a.construct(__p, std::forward<_Args>(__args)...); } 900171: 900171: template 900171: static 900171: _Require<__and_<__not_<__has_construct<_Tp, _Args...>>, 900171: is_constructible<_Tp, _Args...>>> 900171: _S_construct(_Alloc&, _Tp* __p, _Args&&... __args) 900171: noexcept(std::is_nothrow_constructible<_Tp, _Args...>::value) 900171: { 900171: 900171: ::new((void*)__p) _Tp(std::forward<_Args>(__args)...); 900171: 900171: 900171: 900171: } 900171: 900171: template 900171: static auto 900171: _S_destroy(_Alloc2& __a, _Tp* __p, int) 900171: noexcept(noexcept(__a.destroy(__p))) 900171: -> decltype(__a.destroy(__p)) 900171: { __a.destroy(__p); } 900171: 900171: template 900171: static void 900171: _S_destroy(_Alloc2&, _Tp* __p, ...) 900171: noexcept(std::is_nothrow_destructible<_Tp>::value) 900171: { std::_Destroy(__p); } 900171: 900171: template 900171: static constexpr auto 900171: _S_max_size(_Alloc2& __a, int) 900171: -> decltype(__a.max_size()) 900171: { return __a.max_size(); } 900171: 900171: template 900171: static constexpr size_type 900171: _S_max_size(_Alloc2&, ...) 900171: { 900171: 900171: 900171: return __gnu_cxx::__numeric_traits::__max 900171: / sizeof(value_type); 900171: } 900171: 900171: template 900171: static constexpr auto 900171: _S_select(_Alloc2& __a, int) 900171: -> decltype(__a.select_on_container_copy_construction()) 900171: { return __a.select_on_container_copy_construction(); } 900171: 900171: template 900171: static constexpr _Alloc2 900171: _S_select(_Alloc2& __a, ...) 900171: { return __a; } 900171: 900171: public: 900171: # 316 "/usr/aarch64-linux-gnu/include/c++/12/bits/alloc_traits.h" 3 900171: static pointer 900171: allocate(_Alloc& __a, size_type __n) 900171: { return __a.allocate(__n); } 900171: # 331 "/usr/aarch64-linux-gnu/include/c++/12/bits/alloc_traits.h" 3 900171: static pointer 900171: allocate(_Alloc& __a, size_type __n, const_void_pointer __hint) 900171: { return _S_allocate(__a, __n, __hint, 0); } 900171: # 343 "/usr/aarch64-linux-gnu/include/c++/12/bits/alloc_traits.h" 3 900171: static void 900171: deallocate(_Alloc& __a, pointer __p, size_type __n) 900171: { __a.deallocate(__p, __n); } 900171: # 358 "/usr/aarch64-linux-gnu/include/c++/12/bits/alloc_traits.h" 3 900171: template 900171: static auto 900171: construct(_Alloc& __a, _Tp* __p, _Args&&... __args) 900171: noexcept(noexcept(_S_construct(__a, __p, 900171: std::forward<_Args>(__args)...))) 900171: -> decltype(_S_construct(__a, __p, std::forward<_Args>(__args)...)) 900171: { _S_construct(__a, __p, std::forward<_Args>(__args)...); } 900171: # 374 "/usr/aarch64-linux-gnu/include/c++/12/bits/alloc_traits.h" 3 900171: template 900171: static void 900171: destroy(_Alloc& __a, _Tp* __p) 900171: noexcept(noexcept(_S_destroy(__a, __p, 0))) 900171: { _S_destroy(__a, __p, 0); } 900171: # 388 "/usr/aarch64-linux-gnu/include/c++/12/bits/alloc_traits.h" 3 900171: static size_type 900171: max_size(const _Alloc& __a) noexcept 900171: { return _S_max_size(__a, 0); } 900171: # 400 "/usr/aarch64-linux-gnu/include/c++/12/bits/alloc_traits.h" 3 900171: static _Alloc 900171: select_on_container_copy_construction(const _Alloc& __rhs) 900171: { return _S_select(__rhs, 0); } 900171: }; 900171: 900171: 900171: 900171: 900171: 900171: 900171: template 900171: struct allocator_traits> 900171: { 900171: 900171: using allocator_type = allocator<_Tp>; 900171: 900171: 900171: using value_type = _Tp; 900171: 900171: 900171: using pointer = _Tp*; 900171: 900171: 900171: using const_pointer = const _Tp*; 900171: 900171: 900171: using void_pointer = void*; 900171: 900171: 900171: using const_void_pointer = const void*; 900171: 900171: 900171: using difference_type = std::ptrdiff_t; 900171: 900171: 900171: using size_type = std::size_t; 900171: 900171: 900171: using propagate_on_container_copy_assignment = false_type; 900171: 900171: 900171: using propagate_on_container_move_assignment = true_type; 900171: 900171: 900171: using propagate_on_container_swap = false_type; 900171: 900171: 900171: using is_always_equal = true_type; 900171: 900171: template 900171: using rebind_alloc = allocator<_Up>; 900171: 900171: template 900171: using rebind_traits = allocator_traits>; 900171: # 462 "/usr/aarch64-linux-gnu/include/c++/12/bits/alloc_traits.h" 3 900171: static pointer 900171: allocate(allocator_type& __a, size_type __n) 900171: { return __a.allocate(__n); } 900171: # 476 "/usr/aarch64-linux-gnu/include/c++/12/bits/alloc_traits.h" 3 900171: static pointer 900171: allocate(allocator_type& __a, size_type __n, const_void_pointer __hint) 900171: { 900171: 900171: return __a.allocate(__n, __hint); 900171: 900171: 900171: 900171: } 900171: # 494 "/usr/aarch64-linux-gnu/include/c++/12/bits/alloc_traits.h" 3 900171: static void 900171: deallocate(allocator_type& __a, pointer __p, size_type __n) 900171: { __a.deallocate(__p, __n); } 900171: # 509 "/usr/aarch64-linux-gnu/include/c++/12/bits/alloc_traits.h" 3 900171: template 900171: static void 900171: construct(allocator_type& __a __attribute__((__unused__)), _Up* __p, 900171: _Args&&... __args) 900171: noexcept(std::is_nothrow_constructible<_Up, _Args...>::value) 900171: { 900171: 900171: __a.construct(__p, std::forward<_Args>(__args)...); 900171: 900171: 900171: 900171: } 900171: # 529 "/usr/aarch64-linux-gnu/include/c++/12/bits/alloc_traits.h" 3 900171: template 900171: static void 900171: destroy(allocator_type& __a __attribute__((__unused__)), _Up* __p) 900171: noexcept(is_nothrow_destructible<_Up>::value) 900171: { 900171: 900171: __a.destroy(__p); 900171: 900171: 900171: 900171: } 900171: 900171: 900171: 900171: 900171: 900171: 900171: static size_type 900171: max_size(const allocator_type& __a __attribute__((__unused__))) noexcept 900171: { 900171: 900171: return __a.max_size(); 900171: 900171: 900171: 900171: } 900171: 900171: 900171: 900171: 900171: 900171: 900171: static allocator_type 900171: select_on_container_copy_construction(const allocator_type& __rhs) 900171: { return __rhs; } 900171: }; 900171: 900171: 900171: template<> 900171: struct allocator_traits> 900171: { 900171: 900171: using allocator_type = allocator; 900171: 900171: 900171: using value_type = void; 900171: 900171: 900171: using pointer = void*; 900171: 900171: 900171: using const_pointer = const void*; 900171: 900171: 900171: using void_pointer = void*; 900171: 900171: 900171: using const_void_pointer = const void*; 900171: 900171: 900171: using difference_type = std::ptrdiff_t; 900171: 900171: 900171: using size_type = std::size_t; 900171: 900171: 900171: using propagate_on_container_copy_assignment = false_type; 900171: 900171: 900171: using propagate_on_container_move_assignment = true_type; 900171: 900171: 900171: using propagate_on_container_swap = false_type; 900171: 900171: 900171: using is_always_equal = true_type; 900171: 900171: template 900171: using rebind_alloc = allocator<_Up>; 900171: 900171: template 900171: using rebind_traits = allocator_traits>; 900171: 900171: 900171: static void* 900171: allocate(allocator_type&, size_type, const void* = nullptr) = delete; 900171: 900171: 900171: static void 900171: deallocate(allocator_type&, void*, size_type) = delete; 900171: # 631 "/usr/aarch64-linux-gnu/include/c++/12/bits/alloc_traits.h" 3 900171: template 900171: static void 900171: construct(allocator_type&, _Up* __p, _Args&&... __args) 900171: noexcept(std::is_nothrow_constructible<_Up, _Args...>::value) 900171: { std::_Construct(__p, std::forward<_Args>(__args)...); } 900171: # 644 "/usr/aarch64-linux-gnu/include/c++/12/bits/alloc_traits.h" 3 900171: template 900171: static void 900171: destroy(allocator_type&, _Up* __p) 900171: noexcept(is_nothrow_destructible<_Up>::value) 900171: { std::_Destroy(__p); } 900171: 900171: 900171: static size_type 900171: max_size(const allocator_type&) = delete; 900171: 900171: 900171: 900171: 900171: 900171: 900171: static allocator_type 900171: select_on_container_copy_construction(const allocator_type& __rhs) 900171: { return __rhs; } 900171: }; 900171: 900171: 900171: template 900171: inline void 900171: __do_alloc_on_copy(_Alloc& __one, const _Alloc& __two, true_type) 900171: { __one = __two; } 900171: 900171: template 900171: inline void 900171: __do_alloc_on_copy(_Alloc&, const _Alloc&, false_type) 900171: { } 900171: 900171: 900171: template 900171: inline void 900171: __alloc_on_copy(_Alloc& __one, const _Alloc& __two) 900171: { 900171: typedef allocator_traits<_Alloc> __traits; 900171: typedef typename __traits::propagate_on_container_copy_assignment __pocca; 900171: 900171: 900171: 900171: 900171: __do_alloc_on_copy(__one, __two, __pocca()); 900171: 900171: } 900171: 900171: template 900171: constexpr _Alloc 900171: __alloc_on_copy(const _Alloc& __a) 900171: { 900171: typedef allocator_traits<_Alloc> __traits; 900171: return __traits::select_on_container_copy_construction(__a); 900171: } 900171: 900171: 900171: template 900171: inline void __do_alloc_on_move(_Alloc& __one, _Alloc& __two, true_type) 900171: { __one = std::move(__two); } 900171: 900171: template 900171: inline void __do_alloc_on_move(_Alloc&, _Alloc&, false_type) 900171: { } 900171: 900171: 900171: template 900171: inline void 900171: __alloc_on_move(_Alloc& __one, _Alloc& __two) 900171: { 900171: typedef allocator_traits<_Alloc> __traits; 900171: typedef typename __traits::propagate_on_container_move_assignment __pocma; 900171: 900171: 900171: 900171: 900171: __do_alloc_on_move(__one, __two, __pocma()); 900171: 900171: } 900171: 900171: 900171: template 900171: inline void __do_alloc_on_swap(_Alloc& __one, _Alloc& __two, true_type) 900171: { 900171: using std::swap; 900171: swap(__one, __two); 900171: } 900171: 900171: template 900171: inline void __do_alloc_on_swap(_Alloc&, _Alloc&, false_type) 900171: { } 900171: 900171: 900171: template 900171: inline void 900171: __alloc_on_swap(_Alloc& __one, _Alloc& __two) 900171: { 900171: typedef allocator_traits<_Alloc> __traits; 900171: typedef typename __traits::propagate_on_container_swap __pocs; 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: __do_alloc_on_swap(__one, __two, __pocs()); 900171: 900171: } 900171: 900171: template, 900171: typename = void> 900171: struct __is_alloc_insertable_impl 900171: : false_type 900171: { }; 900171: 900171: template 900171: struct __is_alloc_insertable_impl<_Alloc, _Tp, _ValueT, 900171: __void_t::construct( 900171: std::declval<_Alloc&>(), std::declval<_ValueT*>(), 900171: std::declval<_Tp>()))>> 900171: : true_type 900171: { }; 900171: 900171: 900171: 900171: 900171: template 900171: struct __is_copy_insertable 900171: : __is_alloc_insertable_impl<_Alloc, 900171: typename _Alloc::value_type const&>::type 900171: { }; 900171: 900171: 900171: template 900171: struct __is_copy_insertable> 900171: : is_copy_constructible<_Tp> 900171: { }; 900171: 900171: 900171: 900171: 900171: template 900171: struct __is_move_insertable 900171: : __is_alloc_insertable_impl<_Alloc, typename _Alloc::value_type>::type 900171: { }; 900171: 900171: 900171: template 900171: struct __is_move_insertable> 900171: : is_move_constructible<_Tp> 900171: { }; 900171: 900171: 900171: template 900171: struct __is_allocator : false_type { }; 900171: 900171: template 900171: struct __is_allocator<_Alloc, 900171: __void_t().allocate(size_t{}))>> 900171: : true_type { }; 900171: 900171: template 900171: using _RequireAllocator 900171: = typename enable_if<__is_allocator<_Alloc>::value, _Alloc>::type; 900171: 900171: template 900171: using _RequireNotAllocator 900171: = typename enable_if::value, _Alloc>::type; 900171: # 829 "/usr/aarch64-linux-gnu/include/c++/12/bits/alloc_traits.h" 3 900171: template 900171: 900171: void 900171: _Destroy(_ForwardIterator __first, _ForwardIterator __last, 900171: _Allocator& __alloc) 900171: { 900171: for (; __first != __last; ++__first) 900171: 900171: 900171: 900171: allocator_traits<_Allocator>::destroy(__alloc, 900171: std::__addressof(*__first)); 900171: 900171: } 900171: 900171: template 900171: 900171: inline void 900171: _Destroy(_ForwardIterator __first, _ForwardIterator __last, 900171: allocator<_Tp>&) 900171: { 900171: _Destroy(__first, __last); 900171: } 900171: 900171: 900171: } 900171: # 35 "/usr/aarch64-linux-gnu/include/c++/12/ext/alloc_traits.h" 2 3 900171: 900171: 900171: 900171: 900171: namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) 900171: { 900171: 900171: 900171: 900171: 900171: 900171: 900171: template 900171: struct __alloc_traits 900171: 900171: : std::allocator_traits<_Alloc> 900171: 900171: { 900171: typedef _Alloc allocator_type; 900171: 900171: typedef std::allocator_traits<_Alloc> _Base_type; 900171: typedef typename _Base_type::value_type value_type; 900171: typedef typename _Base_type::pointer pointer; 900171: typedef typename _Base_type::const_pointer const_pointer; 900171: typedef typename _Base_type::size_type size_type; 900171: typedef typename _Base_type::difference_type difference_type; 900171: 900171: typedef value_type& reference; 900171: typedef const value_type& const_reference; 900171: using _Base_type::allocate; 900171: using _Base_type::deallocate; 900171: using _Base_type::construct; 900171: using _Base_type::destroy; 900171: using _Base_type::max_size; 900171: 900171: private: 900171: template 900171: using __is_custom_pointer 900171: = std::__and_, 900171: std::__not_>>; 900171: 900171: public: 900171: 900171: template 900171: static 900171: std::__enable_if_t<__is_custom_pointer<_Ptr>::value> 900171: construct(_Alloc& __a, _Ptr __p, _Args&&... __args) 900171: noexcept(noexcept(_Base_type::construct(__a, std::__to_address(__p), 900171: std::forward<_Args>(__args)...))) 900171: { 900171: _Base_type::construct(__a, std::__to_address(__p), 900171: std::forward<_Args>(__args)...); 900171: } 900171: 900171: 900171: template 900171: static 900171: std::__enable_if_t<__is_custom_pointer<_Ptr>::value> 900171: destroy(_Alloc& __a, _Ptr __p) 900171: noexcept(noexcept(_Base_type::destroy(__a, std::__to_address(__p)))) 900171: { _Base_type::destroy(__a, std::__to_address(__p)); } 900171: 900171: static constexpr _Alloc _S_select_on_copy(const _Alloc& __a) 900171: { return _Base_type::select_on_container_copy_construction(__a); } 900171: 900171: static void _S_on_swap(_Alloc& __a, _Alloc& __b) 900171: { std::__alloc_on_swap(__a, __b); } 900171: 900171: static constexpr bool _S_propagate_on_copy_assign() 900171: { return _Base_type::propagate_on_container_copy_assignment::value; } 900171: 900171: static constexpr bool _S_propagate_on_move_assign() 900171: { return _Base_type::propagate_on_container_move_assignment::value; } 900171: 900171: static constexpr bool _S_propagate_on_swap() 900171: { return _Base_type::propagate_on_container_swap::value; } 900171: 900171: static constexpr bool _S_always_equal() 900171: { return _Base_type::is_always_equal::value; } 900171: 900171: static constexpr bool _S_nothrow_move() 900171: { return _S_propagate_on_move_assign() || _S_always_equal(); } 900171: 900171: template 900171: struct rebind 900171: { typedef typename _Base_type::template rebind_alloc<_Tp> other; }; 900171: # 166 "/usr/aarch64-linux-gnu/include/c++/12/ext/alloc_traits.h" 3 900171: }; 900171: 900171: 900171: } 900171: # 65 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_uninitialized.h" 2 3 900171: 900171: 900171: 900171: 900171: 900171: namespace std __attribute__ ((__visibility__ ("default"))) 900171: { 900171: 900171: # 81 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_uninitialized.h" 3 900171: template 900171: constexpr bool 900171: __check_constructible() 900171: { 900171: 900171: 900171: 900171: 900171: 900171: static_assert(is_constructible<_ValueType, _Tp>::value, 900171: "result type must be constructible from input type"); 900171: 900171: return true; 900171: } 900171: # 110 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_uninitialized.h" 3 900171: template 900171: 900171: _ForwardIterator 900171: __do_uninit_copy(_InputIterator __first, _InputIterator __last, 900171: _ForwardIterator __result) 900171: { 900171: _ForwardIterator __cur = __result; 900171: try 900171: { 900171: for (; __first != __last; ++__first, (void)++__cur) 900171: std::_Construct(std::__addressof(*__cur), *__first); 900171: return __cur; 900171: } 900171: catch(...) 900171: { 900171: std::_Destroy(__result, __cur); 900171: throw; 900171: } 900171: } 900171: 900171: template 900171: struct __uninitialized_copy 900171: { 900171: template 900171: static _ForwardIterator 900171: __uninit_copy(_InputIterator __first, _InputIterator __last, 900171: _ForwardIterator __result) 900171: { return std::__do_uninit_copy(__first, __last, __result); } 900171: }; 900171: 900171: template<> 900171: struct __uninitialized_copy 900171: { 900171: template 900171: static _ForwardIterator 900171: __uninit_copy(_InputIterator __first, _InputIterator __last, 900171: _ForwardIterator __result) 900171: { return std::copy(__first, __last, __result); } 900171: }; 900171: # 161 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_uninitialized.h" 3 900171: template 900171: inline _ForwardIterator 900171: uninitialized_copy(_InputIterator __first, _InputIterator __last, 900171: _ForwardIterator __result) 900171: { 900171: typedef typename iterator_traits<_InputIterator>::value_type 900171: _ValueType1; 900171: typedef typename iterator_traits<_ForwardIterator>::value_type 900171: _ValueType2; 900171: 900171: 900171: 900171: 900171: const bool __can_memmove = __is_trivial(_ValueType1); 900171: 900171: 900171: 900171: 900171: using _From = decltype(*__first); 900171: 900171: const bool __assignable 900171: = __is_trivial(_ValueType2) && __is_assignable(_ValueType2&, _From) && std::__check_constructible<_ValueType2, _From>(); 900171: 900171: return std::__uninitialized_copy<__can_memmove && __assignable>:: 900171: __uninit_copy(__first, __last, __result); 900171: } 900171: 900171: 900171: 900171: template 900171: void 900171: __do_uninit_fill(_ForwardIterator __first, _ForwardIterator __last, 900171: const _Tp& __x) 900171: { 900171: _ForwardIterator __cur = __first; 900171: try 900171: { 900171: for (; __cur != __last; ++__cur) 900171: std::_Construct(std::__addressof(*__cur), __x); 900171: } 900171: catch(...) 900171: { 900171: std::_Destroy(__first, __cur); 900171: throw; 900171: } 900171: } 900171: 900171: template 900171: struct __uninitialized_fill 900171: { 900171: template 900171: static void 900171: __uninit_fill(_ForwardIterator __first, _ForwardIterator __last, 900171: const _Tp& __x) 900171: { std::__do_uninit_fill(__first, __last, __x); } 900171: }; 900171: 900171: template<> 900171: struct __uninitialized_fill 900171: { 900171: template 900171: static void 900171: __uninit_fill(_ForwardIterator __first, _ForwardIterator __last, 900171: const _Tp& __x) 900171: { std::fill(__first, __last, __x); } 900171: }; 900171: # 239 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_uninitialized.h" 3 900171: template 900171: inline void 900171: uninitialized_fill(_ForwardIterator __first, _ForwardIterator __last, 900171: const _Tp& __x) 900171: { 900171: typedef typename iterator_traits<_ForwardIterator>::value_type 900171: _ValueType; 900171: 900171: 900171: 900171: const bool __can_fill 900171: = __is_trivial(_ValueType) && __is_assignable(_ValueType&, const _Tp&) && std::__check_constructible<_ValueType, const _Tp&>(); 900171: 900171: std::__uninitialized_fill<__can_fill>:: 900171: __uninit_fill(__first, __last, __x); 900171: } 900171: 900171: 900171: 900171: template 900171: 900171: _ForwardIterator 900171: __do_uninit_fill_n(_ForwardIterator __first, _Size __n, const _Tp& __x) 900171: { 900171: _ForwardIterator __cur = __first; 900171: try 900171: { 900171: for (; __n > 0; --__n, (void) ++__cur) 900171: std::_Construct(std::__addressof(*__cur), __x); 900171: return __cur; 900171: } 900171: catch(...) 900171: { 900171: std::_Destroy(__first, __cur); 900171: throw; 900171: } 900171: } 900171: 900171: template 900171: struct __uninitialized_fill_n 900171: { 900171: template 900171: static _ForwardIterator 900171: __uninit_fill_n(_ForwardIterator __first, _Size __n, 900171: const _Tp& __x) 900171: { return std::__do_uninit_fill_n(__first, __n, __x); } 900171: }; 900171: 900171: template<> 900171: struct __uninitialized_fill_n 900171: { 900171: template 900171: static _ForwardIterator 900171: __uninit_fill_n(_ForwardIterator __first, _Size __n, 900171: const _Tp& __x) 900171: { return std::fill_n(__first, __n, __x); } 900171: }; 900171: # 310 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_uninitialized.h" 3 900171: template 900171: inline _ForwardIterator 900171: uninitialized_fill_n(_ForwardIterator __first, _Size __n, const _Tp& __x) 900171: { 900171: typedef typename iterator_traits<_ForwardIterator>::value_type 900171: _ValueType; 900171: 900171: 900171: 900171: const bool __can_fill 900171: = __is_trivial(_ValueType) && __is_assignable(_ValueType&, const _Tp&) && std::__check_constructible<_ValueType, const _Tp&>() 900171: 900171: 900171: 900171: && __is_integer<_Size>::__value; 900171: 900171: return __uninitialized_fill_n<__can_fill>:: 900171: __uninit_fill_n(__first, __n, __x); 900171: } 900171: # 340 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_uninitialized.h" 3 900171: template 900171: 900171: _ForwardIterator 900171: __uninitialized_copy_a(_InputIterator __first, _InputIterator __last, 900171: _ForwardIterator __result, _Allocator& __alloc) 900171: { 900171: _ForwardIterator __cur = __result; 900171: try 900171: { 900171: typedef __gnu_cxx::__alloc_traits<_Allocator> __traits; 900171: for (; __first != __last; ++__first, (void)++__cur) 900171: __traits::construct(__alloc, std::__addressof(*__cur), *__first); 900171: return __cur; 900171: } 900171: catch(...) 900171: { 900171: std::_Destroy(__result, __cur, __alloc); 900171: throw; 900171: } 900171: } 900171: 900171: template 900171: 900171: inline _ForwardIterator 900171: __uninitialized_copy_a(_InputIterator __first, _InputIterator __last, 900171: _ForwardIterator __result, allocator<_Tp>&) 900171: { 900171: 900171: 900171: 900171: 900171: return std::uninitialized_copy(__first, __last, __result); 900171: } 900171: 900171: template 900171: 900171: inline _ForwardIterator 900171: __uninitialized_move_a(_InputIterator __first, _InputIterator __last, 900171: _ForwardIterator __result, _Allocator& __alloc) 900171: { 900171: return std::__uninitialized_copy_a(std::make_move_iterator(__first), 900171: std::make_move_iterator(__last), 900171: __result, __alloc); 900171: } 900171: 900171: template 900171: 900171: inline _ForwardIterator 900171: __uninitialized_move_if_noexcept_a(_InputIterator __first, 900171: _InputIterator __last, 900171: _ForwardIterator __result, 900171: _Allocator& __alloc) 900171: { 900171: return std::__uninitialized_copy_a 900171: (std::__make_move_if_noexcept_iterator(__first), 900171: std::__make_move_if_noexcept_iterator(__last), __result, __alloc); 900171: } 900171: 900171: template 900171: 900171: void 900171: __uninitialized_fill_a(_ForwardIterator __first, _ForwardIterator __last, 900171: const _Tp& __x, _Allocator& __alloc) 900171: { 900171: _ForwardIterator __cur = __first; 900171: try 900171: { 900171: typedef __gnu_cxx::__alloc_traits<_Allocator> __traits; 900171: for (; __cur != __last; ++__cur) 900171: __traits::construct(__alloc, std::__addressof(*__cur), __x); 900171: } 900171: catch(...) 900171: { 900171: std::_Destroy(__first, __cur, __alloc); 900171: throw; 900171: } 900171: } 900171: 900171: template 900171: 900171: inline void 900171: __uninitialized_fill_a(_ForwardIterator __first, _ForwardIterator __last, 900171: const _Tp& __x, allocator<_Tp2>&) 900171: { 900171: 900171: 900171: 900171: 900171: std::uninitialized_fill(__first, __last, __x); 900171: } 900171: 900171: template 900171: 900171: _ForwardIterator 900171: __uninitialized_fill_n_a(_ForwardIterator __first, _Size __n, 900171: const _Tp& __x, _Allocator& __alloc) 900171: { 900171: _ForwardIterator __cur = __first; 900171: try 900171: { 900171: typedef __gnu_cxx::__alloc_traits<_Allocator> __traits; 900171: for (; __n > 0; --__n, (void) ++__cur) 900171: __traits::construct(__alloc, std::__addressof(*__cur), __x); 900171: return __cur; 900171: } 900171: catch(...) 900171: { 900171: std::_Destroy(__first, __cur, __alloc); 900171: throw; 900171: } 900171: } 900171: 900171: template 900171: 900171: inline _ForwardIterator 900171: __uninitialized_fill_n_a(_ForwardIterator __first, _Size __n, 900171: const _Tp& __x, allocator<_Tp2>&) 900171: { 900171: 900171: 900171: 900171: 900171: return std::uninitialized_fill_n(__first, __n, __x); 900171: } 900171: # 480 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_uninitialized.h" 3 900171: template 900171: inline _ForwardIterator 900171: __uninitialized_copy_move(_InputIterator1 __first1, 900171: _InputIterator1 __last1, 900171: _InputIterator2 __first2, 900171: _InputIterator2 __last2, 900171: _ForwardIterator __result, 900171: _Allocator& __alloc) 900171: { 900171: _ForwardIterator __mid = std::__uninitialized_copy_a(__first1, __last1, 900171: __result, 900171: __alloc); 900171: try 900171: { 900171: return std::__uninitialized_move_a(__first2, __last2, __mid, __alloc); 900171: } 900171: catch(...) 900171: { 900171: std::_Destroy(__result, __mid, __alloc); 900171: throw; 900171: } 900171: } 900171: 900171: 900171: 900171: 900171: 900171: template 900171: inline _ForwardIterator 900171: __uninitialized_move_copy(_InputIterator1 __first1, 900171: _InputIterator1 __last1, 900171: _InputIterator2 __first2, 900171: _InputIterator2 __last2, 900171: _ForwardIterator __result, 900171: _Allocator& __alloc) 900171: { 900171: _ForwardIterator __mid = std::__uninitialized_move_a(__first1, __last1, 900171: __result, 900171: __alloc); 900171: try 900171: { 900171: return std::__uninitialized_copy_a(__first2, __last2, __mid, __alloc); 900171: } 900171: catch(...) 900171: { 900171: std::_Destroy(__result, __mid, __alloc); 900171: throw; 900171: } 900171: } 900171: 900171: 900171: 900171: 900171: template 900171: inline _ForwardIterator 900171: __uninitialized_fill_move(_ForwardIterator __result, _ForwardIterator __mid, 900171: const _Tp& __x, _InputIterator __first, 900171: _InputIterator __last, _Allocator& __alloc) 900171: { 900171: std::__uninitialized_fill_a(__result, __mid, __x, __alloc); 900171: try 900171: { 900171: return std::__uninitialized_move_a(__first, __last, __mid, __alloc); 900171: } 900171: catch(...) 900171: { 900171: std::_Destroy(__result, __mid, __alloc); 900171: throw; 900171: } 900171: } 900171: 900171: 900171: 900171: 900171: template 900171: inline void 900171: __uninitialized_move_fill(_InputIterator __first1, _InputIterator __last1, 900171: _ForwardIterator __first2, 900171: _ForwardIterator __last2, const _Tp& __x, 900171: _Allocator& __alloc) 900171: { 900171: _ForwardIterator __mid2 = std::__uninitialized_move_a(__first1, __last1, 900171: __first2, 900171: __alloc); 900171: try 900171: { 900171: std::__uninitialized_fill_a(__mid2, __last2, __x, __alloc); 900171: } 900171: catch(...) 900171: { 900171: std::_Destroy(__first2, __mid2, __alloc); 900171: throw; 900171: } 900171: } 900171: # 587 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_uninitialized.h" 3 900171: template 900171: struct __uninitialized_default_1 900171: { 900171: template 900171: static void 900171: __uninit_default(_ForwardIterator __first, _ForwardIterator __last) 900171: { 900171: _ForwardIterator __cur = __first; 900171: try 900171: { 900171: for (; __cur != __last; ++__cur) 900171: std::_Construct(std::__addressof(*__cur)); 900171: } 900171: catch(...) 900171: { 900171: std::_Destroy(__first, __cur); 900171: throw; 900171: } 900171: } 900171: }; 900171: 900171: template<> 900171: struct __uninitialized_default_1 900171: { 900171: template 900171: static void 900171: __uninit_default(_ForwardIterator __first, _ForwardIterator __last) 900171: { 900171: if (__first == __last) 900171: return; 900171: 900171: typename iterator_traits<_ForwardIterator>::value_type* __val 900171: = std::__addressof(*__first); 900171: std::_Construct(__val); 900171: if (++__first != __last) 900171: std::fill(__first, __last, *__val); 900171: } 900171: }; 900171: 900171: template 900171: struct __uninitialized_default_n_1 900171: { 900171: template 900171: 900171: static _ForwardIterator 900171: __uninit_default_n(_ForwardIterator __first, _Size __n) 900171: { 900171: _ForwardIterator __cur = __first; 900171: try 900171: { 900171: for (; __n > 0; --__n, (void) ++__cur) 900171: std::_Construct(std::__addressof(*__cur)); 900171: return __cur; 900171: } 900171: catch(...) 900171: { 900171: std::_Destroy(__first, __cur); 900171: throw; 900171: } 900171: } 900171: }; 900171: 900171: template<> 900171: struct __uninitialized_default_n_1 900171: { 900171: template 900171: 900171: static _ForwardIterator 900171: __uninit_default_n(_ForwardIterator __first, _Size __n) 900171: { 900171: if (__n > 0) 900171: { 900171: typename iterator_traits<_ForwardIterator>::value_type* __val 900171: = std::__addressof(*__first); 900171: std::_Construct(__val); 900171: ++__first; 900171: __first = std::fill_n(__first, __n - 1, *__val); 900171: } 900171: return __first; 900171: } 900171: }; 900171: 900171: 900171: 900171: template 900171: inline void 900171: __uninitialized_default(_ForwardIterator __first, 900171: _ForwardIterator __last) 900171: { 900171: typedef typename iterator_traits<_ForwardIterator>::value_type 900171: _ValueType; 900171: 900171: const bool __assignable = is_copy_assignable<_ValueType>::value; 900171: 900171: std::__uninitialized_default_1<__is_trivial(_ValueType) 900171: && __assignable>:: 900171: __uninit_default(__first, __last); 900171: } 900171: 900171: 900171: 900171: template 900171: 900171: inline _ForwardIterator 900171: __uninitialized_default_n(_ForwardIterator __first, _Size __n) 900171: { 900171: typedef typename iterator_traits<_ForwardIterator>::value_type 900171: _ValueType; 900171: 900171: constexpr bool __can_fill 900171: = __and_, is_copy_assignable<_ValueType>>::value; 900171: 900171: return __uninitialized_default_n_1<__is_trivial(_ValueType) 900171: && __can_fill>:: 900171: __uninit_default_n(__first, __n); 900171: } 900171: 900171: 900171: 900171: 900171: 900171: template 900171: void 900171: __uninitialized_default_a(_ForwardIterator __first, 900171: _ForwardIterator __last, 900171: _Allocator& __alloc) 900171: { 900171: _ForwardIterator __cur = __first; 900171: try 900171: { 900171: typedef __gnu_cxx::__alloc_traits<_Allocator> __traits; 900171: for (; __cur != __last; ++__cur) 900171: __traits::construct(__alloc, std::__addressof(*__cur)); 900171: } 900171: catch(...) 900171: { 900171: std::_Destroy(__first, __cur, __alloc); 900171: throw; 900171: } 900171: } 900171: 900171: template 900171: inline void 900171: __uninitialized_default_a(_ForwardIterator __first, 900171: _ForwardIterator __last, 900171: allocator<_Tp>&) 900171: { std::__uninitialized_default(__first, __last); } 900171: 900171: 900171: 900171: 900171: 900171: template 900171: _ForwardIterator 900171: __uninitialized_default_n_a(_ForwardIterator __first, _Size __n, 900171: _Allocator& __alloc) 900171: { 900171: _ForwardIterator __cur = __first; 900171: try 900171: { 900171: typedef __gnu_cxx::__alloc_traits<_Allocator> __traits; 900171: for (; __n > 0; --__n, (void) ++__cur) 900171: __traits::construct(__alloc, std::__addressof(*__cur)); 900171: return __cur; 900171: } 900171: catch(...) 900171: { 900171: std::_Destroy(__first, __cur, __alloc); 900171: throw; 900171: } 900171: } 900171: 900171: 900171: 900171: template 900171: 900171: inline _ForwardIterator 900171: __uninitialized_default_n_a(_ForwardIterator __first, _Size __n, 900171: allocator<_Tp>&) 900171: { return std::__uninitialized_default_n(__first, __n); } 900171: 900171: template 900171: struct __uninitialized_default_novalue_1 900171: { 900171: template 900171: static void 900171: __uninit_default_novalue(_ForwardIterator __first, 900171: _ForwardIterator __last) 900171: { 900171: _ForwardIterator __cur = __first; 900171: try 900171: { 900171: for (; __cur != __last; ++__cur) 900171: std::_Construct_novalue(std::__addressof(*__cur)); 900171: } 900171: catch(...) 900171: { 900171: std::_Destroy(__first, __cur); 900171: throw; 900171: } 900171: } 900171: }; 900171: 900171: template<> 900171: struct __uninitialized_default_novalue_1 900171: { 900171: template 900171: static void 900171: __uninit_default_novalue(_ForwardIterator __first, 900171: _ForwardIterator __last) 900171: { 900171: } 900171: }; 900171: 900171: template 900171: struct __uninitialized_default_novalue_n_1 900171: { 900171: template 900171: static _ForwardIterator 900171: __uninit_default_novalue_n(_ForwardIterator __first, _Size __n) 900171: { 900171: _ForwardIterator __cur = __first; 900171: try 900171: { 900171: for (; __n > 0; --__n, (void) ++__cur) 900171: std::_Construct_novalue(std::__addressof(*__cur)); 900171: return __cur; 900171: } 900171: catch(...) 900171: { 900171: std::_Destroy(__first, __cur); 900171: throw; 900171: } 900171: } 900171: }; 900171: 900171: template<> 900171: struct __uninitialized_default_novalue_n_1 900171: { 900171: template 900171: static _ForwardIterator 900171: __uninit_default_novalue_n(_ForwardIterator __first, _Size __n) 900171: { return std::next(__first, __n); } 900171: }; 900171: 900171: 900171: 900171: template 900171: inline void 900171: __uninitialized_default_novalue(_ForwardIterator __first, 900171: _ForwardIterator __last) 900171: { 900171: typedef typename iterator_traits<_ForwardIterator>::value_type 900171: _ValueType; 900171: 900171: std::__uninitialized_default_novalue_1< 900171: is_trivially_default_constructible<_ValueType>::value>:: 900171: __uninit_default_novalue(__first, __last); 900171: } 900171: 900171: 900171: 900171: template 900171: inline _ForwardIterator 900171: __uninitialized_default_novalue_n(_ForwardIterator __first, _Size __n) 900171: { 900171: typedef typename iterator_traits<_ForwardIterator>::value_type 900171: _ValueType; 900171: 900171: return __uninitialized_default_novalue_n_1< 900171: is_trivially_default_constructible<_ValueType>::value>:: 900171: __uninit_default_novalue_n(__first, __n); 900171: } 900171: 900171: template 900171: _ForwardIterator 900171: __uninitialized_copy_n(_InputIterator __first, _Size __n, 900171: _ForwardIterator __result, input_iterator_tag) 900171: { 900171: _ForwardIterator __cur = __result; 900171: try 900171: { 900171: for (; __n > 0; --__n, (void) ++__first, ++__cur) 900171: std::_Construct(std::__addressof(*__cur), *__first); 900171: return __cur; 900171: } 900171: catch(...) 900171: { 900171: std::_Destroy(__result, __cur); 900171: throw; 900171: } 900171: } 900171: 900171: template 900171: inline _ForwardIterator 900171: __uninitialized_copy_n(_RandomAccessIterator __first, _Size __n, 900171: _ForwardIterator __result, 900171: random_access_iterator_tag) 900171: { return std::uninitialized_copy(__first, __first + __n, __result); } 900171: 900171: template 900171: pair<_InputIterator, _ForwardIterator> 900171: __uninitialized_copy_n_pair(_InputIterator __first, _Size __n, 900171: _ForwardIterator __result, input_iterator_tag) 900171: { 900171: _ForwardIterator __cur = __result; 900171: try 900171: { 900171: for (; __n > 0; --__n, (void) ++__first, ++__cur) 900171: std::_Construct(std::__addressof(*__cur), *__first); 900171: return {__first, __cur}; 900171: } 900171: catch(...) 900171: { 900171: std::_Destroy(__result, __cur); 900171: throw; 900171: } 900171: } 900171: 900171: template 900171: inline pair<_RandomAccessIterator, _ForwardIterator> 900171: __uninitialized_copy_n_pair(_RandomAccessIterator __first, _Size __n, 900171: _ForwardIterator __result, 900171: random_access_iterator_tag) 900171: { 900171: auto __second_res = uninitialized_copy(__first, __first + __n, __result); 900171: auto __first_res = std::next(__first, __n); 900171: return {__first_res, __second_res}; 900171: } 900171: # 933 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_uninitialized.h" 3 900171: template 900171: inline _ForwardIterator 900171: uninitialized_copy_n(_InputIterator __first, _Size __n, 900171: _ForwardIterator __result) 900171: { return std::__uninitialized_copy_n(__first, __n, __result, 900171: std::__iterator_category(__first)); } 900171: 900171: 900171: template 900171: inline pair<_InputIterator, _ForwardIterator> 900171: __uninitialized_copy_n_pair(_InputIterator __first, _Size __n, 900171: _ForwardIterator __result) 900171: { 900171: return 900171: std::__uninitialized_copy_n_pair(__first, __n, __result, 900171: std::__iterator_category(__first)); 900171: } 900171: # 1053 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_uninitialized.h" 3 900171: template 900171: 900171: inline void 900171: __relocate_object_a(_Tp* __restrict __dest, _Up* __restrict __orig, 900171: _Allocator& __alloc) 900171: noexcept(noexcept(std::allocator_traits<_Allocator>::construct(__alloc, 900171: __dest, std::move(*__orig))) 900171: && noexcept(std::allocator_traits<_Allocator>::destroy( 900171: __alloc, std::__addressof(*__orig)))) 900171: { 900171: typedef std::allocator_traits<_Allocator> __traits; 900171: __traits::construct(__alloc, __dest, std::move(*__orig)); 900171: __traits::destroy(__alloc, std::__addressof(*__orig)); 900171: } 900171: 900171: 900171: 900171: template 900171: struct __is_bitwise_relocatable 900171: : is_trivial<_Tp> { }; 900171: 900171: template 900171: 900171: inline _ForwardIterator 900171: __relocate_a_1(_InputIterator __first, _InputIterator __last, 900171: _ForwardIterator __result, _Allocator& __alloc) 900171: noexcept(noexcept(std::__relocate_object_a(std::addressof(*__result), 900171: std::addressof(*__first), 900171: __alloc))) 900171: { 900171: typedef typename iterator_traits<_InputIterator>::value_type 900171: _ValueType; 900171: typedef typename iterator_traits<_ForwardIterator>::value_type 900171: _ValueType2; 900171: static_assert(std::is_same<_ValueType, _ValueType2>::value, 900171: "relocation is only possible for values of the same type"); 900171: _ForwardIterator __cur = __result; 900171: for (; __first != __last; ++__first, (void)++__cur) 900171: std::__relocate_object_a(std::__addressof(*__cur), 900171: std::__addressof(*__first), __alloc); 900171: return __cur; 900171: } 900171: 900171: template 900171: 900171: inline __enable_if_t::value, _Tp*> 900171: __relocate_a_1(_Tp* __first, _Tp* __last, 900171: _Tp* __result, 900171: [[__maybe_unused__]] allocator<_Up>& __alloc) noexcept 900171: { 900171: ptrdiff_t __count = __last - __first; 900171: if (__count > 0) 900171: { 900171: # 1117 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_uninitialized.h" 3 900171: __builtin_memmove(__result, __first, __count * sizeof(_Tp)); 900171: } 900171: return __result + __count; 900171: } 900171: 900171: 900171: template 900171: 900171: inline _ForwardIterator 900171: __relocate_a(_InputIterator __first, _InputIterator __last, 900171: _ForwardIterator __result, _Allocator& __alloc) 900171: noexcept(noexcept(__relocate_a_1(std::__niter_base(__first), 900171: std::__niter_base(__last), 900171: std::__niter_base(__result), __alloc))) 900171: { 900171: return std::__relocate_a_1(std::__niter_base(__first), 900171: std::__niter_base(__last), 900171: std::__niter_base(__result), __alloc); 900171: } 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: } 900171: # 67 "/usr/aarch64-linux-gnu/include/c++/12/memory" 2 3 900171: # 1 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_tempbuf.h" 1 3 900171: # 62 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_tempbuf.h" 3 900171: namespace std __attribute__ ((__visibility__ ("default"))) 900171: { 900171: 900171: 900171: namespace __detail 900171: { 900171: template 900171: inline void 900171: __return_temporary_buffer(_Tp* __p, 900171: size_t __len __attribute__((__unused__))) 900171: { 900171: 900171: 900171: 900171: ::operator delete(__p); 900171: 900171: } 900171: } 900171: # 98 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_tempbuf.h" 3 900171: template 900171: 900171: pair<_Tp*, ptrdiff_t> 900171: get_temporary_buffer(ptrdiff_t __len) noexcept 900171: { 900171: const ptrdiff_t __max = 900171: __gnu_cxx::__numeric_traits::__max / sizeof(_Tp); 900171: if (__len > __max) 900171: __len = __max; 900171: 900171: while (__len > 0) 900171: { 900171: _Tp* __tmp = static_cast<_Tp*>(::operator new(__len * sizeof(_Tp), 900171: std::nothrow)); 900171: if (__tmp != 0) 900171: return std::pair<_Tp*, ptrdiff_t>(__tmp, __len); 900171: __len = __len == 1 ? 0 : ((__len + 1) / 2); 900171: } 900171: return std::pair<_Tp*, ptrdiff_t>(static_cast<_Tp*>(0), 0); 900171: } 900171: # 126 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_tempbuf.h" 3 900171: template 900171: inline void 900171: return_temporary_buffer(_Tp* __p) 900171: { ::operator delete(__p); } 900171: 900171: 900171: 900171: 900171: 900171: 900171: template 900171: class _Temporary_buffer 900171: { 900171: 900171: 900171: 900171: public: 900171: typedef _Tp value_type; 900171: typedef value_type* pointer; 900171: typedef pointer iterator; 900171: typedef ptrdiff_t size_type; 900171: 900171: protected: 900171: size_type _M_original_len; 900171: size_type _M_len; 900171: pointer _M_buffer; 900171: 900171: public: 900171: 900171: size_type 900171: size() const 900171: { return _M_len; } 900171: 900171: 900171: size_type 900171: requested_size() const 900171: { return _M_original_len; } 900171: 900171: 900171: iterator 900171: begin() 900171: { return _M_buffer; } 900171: 900171: 900171: iterator 900171: end() 900171: { return _M_buffer + _M_len; } 900171: 900171: 900171: 900171: 900171: 900171: _Temporary_buffer(_ForwardIterator __seed, size_type __original_len); 900171: 900171: ~_Temporary_buffer() 900171: { 900171: std::_Destroy(_M_buffer, _M_buffer + _M_len); 900171: std::__detail::__return_temporary_buffer(_M_buffer, _M_len); 900171: } 900171: 900171: private: 900171: 900171: _Temporary_buffer(const _Temporary_buffer&); 900171: 900171: void 900171: operator=(const _Temporary_buffer&); 900171: }; 900171: 900171: 900171: template 900171: struct __uninitialized_construct_buf_dispatch 900171: { 900171: template 900171: static void 900171: __ucr(_Pointer __first, _Pointer __last, 900171: _ForwardIterator __seed) 900171: { 900171: if (__first == __last) 900171: return; 900171: 900171: _Pointer __cur = __first; 900171: try 900171: { 900171: std::_Construct(std::__addressof(*__first), 900171: std::move(*__seed)); 900171: _Pointer __prev = __cur; 900171: ++__cur; 900171: for(; __cur != __last; ++__cur, ++__prev) 900171: std::_Construct(std::__addressof(*__cur), 900171: std::move(*__prev)); 900171: *__seed = std::move(*__prev); 900171: } 900171: catch(...) 900171: { 900171: std::_Destroy(__first, __cur); 900171: throw; 900171: } 900171: } 900171: }; 900171: 900171: template<> 900171: struct __uninitialized_construct_buf_dispatch 900171: { 900171: template 900171: static void 900171: __ucr(_Pointer, _Pointer, _ForwardIterator) { } 900171: }; 900171: # 244 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_tempbuf.h" 3 900171: template 900171: inline void 900171: __uninitialized_construct_buf(_Pointer __first, _Pointer __last, 900171: _ForwardIterator __seed) 900171: { 900171: typedef typename std::iterator_traits<_Pointer>::value_type 900171: _ValueType; 900171: 900171: std::__uninitialized_construct_buf_dispatch< 900171: __has_trivial_constructor(_ValueType)>:: 900171: __ucr(__first, __last, __seed); 900171: } 900171: 900171: template 900171: _Temporary_buffer<_ForwardIterator, _Tp>:: 900171: _Temporary_buffer(_ForwardIterator __seed, size_type __original_len) 900171: : _M_original_len(__original_len), _M_len(0), _M_buffer(0) 900171: { 900171: std::pair __p( 900171: std::get_temporary_buffer(_M_original_len)); 900171: 900171: if (__p.first) 900171: { 900171: try 900171: { 900171: std::__uninitialized_construct_buf(__p.first, __p.first + __p.second, 900171: __seed); 900171: _M_buffer = __p.first; 900171: _M_len = __p.second; 900171: } 900171: catch(...) 900171: { 900171: std::__detail::__return_temporary_buffer(__p.first, __p.second); 900171: throw; 900171: } 900171: } 900171: } 900171: 900171: 900171: } 900171: # 68 "/usr/aarch64-linux-gnu/include/c++/12/memory" 2 3 900171: # 1 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_raw_storage_iter.h" 1 3 900171: # 59 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_raw_storage_iter.h" 3 900171: namespace std __attribute__ ((__visibility__ ("default"))) 900171: { 900171: 900171: 900171: 900171: #pragma GCC diagnostic push 900171: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 900171: 900171: 900171: 900171: 900171: 900171: template 900171: class raw_storage_iterator 900171: : public iterator 900171: { 900171: protected: 900171: _OutputIterator _M_iter; 900171: 900171: public: 900171: explicit 900171: raw_storage_iterator(_OutputIterator __x) 900171: : _M_iter(__x) {} 900171: 900171: raw_storage_iterator& 900171: operator*() { return *this; } 900171: 900171: raw_storage_iterator& 900171: operator=(const _Tp& __element) 900171: { 900171: std::_Construct(std::__addressof(*_M_iter), __element); 900171: return *this; 900171: } 900171: 900171: 900171: 900171: 900171: raw_storage_iterator& 900171: operator=(_Tp&& __element) 900171: { 900171: std::_Construct(std::__addressof(*_M_iter), std::move(__element)); 900171: return *this; 900171: } 900171: 900171: 900171: raw_storage_iterator& 900171: operator++() 900171: { 900171: ++_M_iter; 900171: return *this; 900171: } 900171: 900171: raw_storage_iterator 900171: operator++(int) 900171: { 900171: raw_storage_iterator __tmp = *this; 900171: ++_M_iter; 900171: return __tmp; 900171: } 900171: 900171: 900171: 900171: _OutputIterator base() const { return _M_iter; } 900171: }; 900171: #pragma GCC diagnostic pop 900171: 900171: 900171: } 900171: # 69 "/usr/aarch64-linux-gnu/include/c++/12/memory" 2 3 900171: 900171: 900171: 900171: # 1 "/usr/aarch64-linux-gnu/include/c++/12/bits/align.h" 1 3 900171: # 35 "/usr/aarch64-linux-gnu/include/c++/12/bits/align.h" 3 900171: # 1 "/usr/aarch64-linux-gnu/include/c++/12/bit" 1 3 900171: # 32 "/usr/aarch64-linux-gnu/include/c++/12/bit" 3 900171: 900171: # 33 "/usr/aarch64-linux-gnu/include/c++/12/bit" 3 900171: # 36 "/usr/aarch64-linux-gnu/include/c++/12/bits/align.h" 2 3 900171: 900171: 900171: 900171: namespace std __attribute__ ((__visibility__ ("default"))) 900171: { 900171: 900171: # 61 "/usr/aarch64-linux-gnu/include/c++/12/bits/align.h" 3 900171: inline void* 900171: align(size_t __align, size_t __size, void*& __ptr, size_t& __space) noexcept 900171: { 900171: if (__space < __size) 900171: return nullptr; 900171: const auto __intptr = reinterpret_cast(__ptr); 900171: const auto __aligned = (__intptr - 1u + __align) & -__align; 900171: const auto __diff = __aligned - __intptr; 900171: if (__diff > (__space - __size)) 900171: return nullptr; 900171: else 900171: { 900171: __space -= __diff; 900171: return __ptr = reinterpret_cast(__aligned); 900171: } 900171: } 900171: # 108 "/usr/aarch64-linux-gnu/include/c++/12/bits/align.h" 3 900171: 900171: } 900171: # 73 "/usr/aarch64-linux-gnu/include/c++/12/memory" 2 3 900171: # 1 "/usr/aarch64-linux-gnu/include/c++/12/bits/uses_allocator.h" 1 3 900171: # 35 "/usr/aarch64-linux-gnu/include/c++/12/bits/uses_allocator.h" 3 900171: namespace std __attribute__ ((__visibility__ ("default"))) 900171: { 900171: 900171: 900171: 900171: 900171: struct __erased_type { }; 900171: 900171: 900171: 900171: 900171: template 900171: using __is_erased_or_convertible 900171: = __or_, is_same<_Tp, __erased_type>>; 900171: 900171: 900171: struct allocator_arg_t { explicit allocator_arg_t() = default; }; 900171: 900171: constexpr allocator_arg_t allocator_arg = 900171: allocator_arg_t(); 900171: 900171: template> 900171: struct __uses_allocator_helper 900171: : false_type { }; 900171: 900171: template 900171: struct __uses_allocator_helper<_Tp, _Alloc, 900171: __void_t> 900171: : __is_erased_or_convertible<_Alloc, typename _Tp::allocator_type>::type 900171: { }; 900171: 900171: 900171: template 900171: struct uses_allocator 900171: : __uses_allocator_helper<_Tp, _Alloc>::type 900171: { }; 900171: 900171: struct __uses_alloc_base { }; 900171: 900171: struct __uses_alloc0 : __uses_alloc_base 900171: { 900171: struct _Sink { void operator=(const void*) { } } _M_a; 900171: }; 900171: 900171: template 900171: struct __uses_alloc1 : __uses_alloc_base { const _Alloc* _M_a; }; 900171: 900171: template 900171: struct __uses_alloc2 : __uses_alloc_base { const _Alloc* _M_a; }; 900171: 900171: template 900171: struct __uses_alloc; 900171: 900171: template 900171: struct __uses_alloc 900171: : __conditional_t< 900171: is_constructible<_Tp, allocator_arg_t, const _Alloc&, _Args...>::value, 900171: __uses_alloc1<_Alloc>, 900171: __uses_alloc2<_Alloc>> 900171: { 900171: 900171: 900171: static_assert(__or_< 900171: is_constructible<_Tp, allocator_arg_t, const _Alloc&, _Args...>, 900171: is_constructible<_Tp, _Args..., const _Alloc&>>::value, 900171: "construction with an allocator must be possible" 900171: " if uses_allocator is true"); 900171: }; 900171: 900171: template 900171: struct __uses_alloc 900171: : __uses_alloc0 { }; 900171: 900171: template 900171: using __uses_alloc_t = 900171: __uses_alloc::value, _Tp, _Alloc, _Args...>; 900171: 900171: template 900171: 900171: inline __uses_alloc_t<_Tp, _Alloc, _Args...> 900171: __use_alloc(const _Alloc& __a) 900171: { 900171: __uses_alloc_t<_Tp, _Alloc, _Args...> __ret; 900171: __ret._M_a = std::__addressof(__a); 900171: return __ret; 900171: } 900171: 900171: template 900171: void 900171: __use_alloc(const _Alloc&&) = delete; 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: template class _Predicate, 900171: typename _Tp, typename _Alloc, typename... _Args> 900171: struct __is_uses_allocator_predicate 900171: : __conditional_t::value, 900171: __or_<_Predicate<_Tp, allocator_arg_t, _Alloc, _Args...>, 900171: _Predicate<_Tp, _Args..., _Alloc>>, 900171: _Predicate<_Tp, _Args...>> { }; 900171: 900171: template 900171: struct __is_uses_allocator_constructible 900171: : __is_uses_allocator_predicate 900171: { }; 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: template 900171: struct __is_nothrow_uses_allocator_constructible 900171: : __is_uses_allocator_predicate 900171: { }; 900171: # 165 "/usr/aarch64-linux-gnu/include/c++/12/bits/uses_allocator.h" 3 900171: template 900171: void __uses_allocator_construct_impl(__uses_alloc0 __a, _Tp* __ptr, 900171: _Args&&... __args) 900171: { ::new ((void*)__ptr) _Tp(std::forward<_Args>(__args)...); } 900171: 900171: template 900171: void __uses_allocator_construct_impl(__uses_alloc1<_Alloc> __a, _Tp* __ptr, 900171: _Args&&... __args) 900171: { 900171: ::new ((void*)__ptr) _Tp(allocator_arg, *__a._M_a, 900171: std::forward<_Args>(__args)...); 900171: } 900171: 900171: template 900171: void __uses_allocator_construct_impl(__uses_alloc2<_Alloc> __a, _Tp* __ptr, 900171: _Args&&... __args) 900171: { ::new ((void*)__ptr) _Tp(std::forward<_Args>(__args)..., *__a._M_a); } 900171: 900171: template 900171: void __uses_allocator_construct(const _Alloc& __a, _Tp* __ptr, 900171: _Args&&... __args) 900171: { 900171: std::__uses_allocator_construct_impl( 900171: std::__use_alloc<_Tp, _Alloc, _Args...>(__a), __ptr, 900171: std::forward<_Args>(__args)...); 900171: } 900171: 900171: 900171: 900171: } 900171: # 74 "/usr/aarch64-linux-gnu/include/c++/12/memory" 2 3 900171: 900171: 900171: # 1 "/usr/aarch64-linux-gnu/include/c++/12/bits/unique_ptr.h" 1 3 900171: # 36 "/usr/aarch64-linux-gnu/include/c++/12/bits/unique_ptr.h" 3 900171: # 1 "/usr/aarch64-linux-gnu/include/c++/12/tuple" 1 3 900171: # 32 "/usr/aarch64-linux-gnu/include/c++/12/tuple" 3 900171: 900171: # 33 "/usr/aarch64-linux-gnu/include/c++/12/tuple" 3 900171: # 41 "/usr/aarch64-linux-gnu/include/c++/12/tuple" 3 900171: # 1 "/usr/aarch64-linux-gnu/include/c++/12/bits/invoke.h" 1 3 900171: # 33 "/usr/aarch64-linux-gnu/include/c++/12/bits/invoke.h" 3 900171: 900171: # 34 "/usr/aarch64-linux-gnu/include/c++/12/bits/invoke.h" 3 900171: # 42 "/usr/aarch64-linux-gnu/include/c++/12/bits/invoke.h" 3 900171: namespace std __attribute__ ((__visibility__ ("default"))) 900171: { 900171: 900171: # 53 "/usr/aarch64-linux-gnu/include/c++/12/bits/invoke.h" 3 900171: template::type> 900171: constexpr _Up&& 900171: __invfwd(typename remove_reference<_Tp>::type& __t) noexcept 900171: { return static_cast<_Up&&>(__t); } 900171: 900171: template 900171: constexpr _Res 900171: __invoke_impl(__invoke_other, _Fn&& __f, _Args&&... __args) 900171: { return std::forward<_Fn>(__f)(std::forward<_Args>(__args)...); } 900171: 900171: template 900171: constexpr _Res 900171: __invoke_impl(__invoke_memfun_ref, _MemFun&& __f, _Tp&& __t, 900171: _Args&&... __args) 900171: { return (__invfwd<_Tp>(__t).*__f)(std::forward<_Args>(__args)...); } 900171: 900171: template 900171: constexpr _Res 900171: __invoke_impl(__invoke_memfun_deref, _MemFun&& __f, _Tp&& __t, 900171: _Args&&... __args) 900171: { 900171: return ((*std::forward<_Tp>(__t)).*__f)(std::forward<_Args>(__args)...); 900171: } 900171: 900171: template 900171: constexpr _Res 900171: __invoke_impl(__invoke_memobj_ref, _MemPtr&& __f, _Tp&& __t) 900171: { return __invfwd<_Tp>(__t).*__f; } 900171: 900171: template 900171: constexpr _Res 900171: __invoke_impl(__invoke_memobj_deref, _MemPtr&& __f, _Tp&& __t) 900171: { return (*std::forward<_Tp>(__t)).*__f; } 900171: 900171: 900171: template 900171: constexpr typename __invoke_result<_Callable, _Args...>::type 900171: __invoke(_Callable&& __fn, _Args&&... __args) 900171: noexcept(__is_nothrow_invocable<_Callable, _Args...>::value) 900171: { 900171: using __result = __invoke_result<_Callable, _Args...>; 900171: using __type = typename __result::type; 900171: using __tag = typename __result::__invoke_type; 900171: return std::__invoke_impl<__type>(__tag{}, std::forward<_Callable>(__fn), 900171: std::forward<_Args>(__args)...); 900171: } 900171: # 119 "/usr/aarch64-linux-gnu/include/c++/12/bits/invoke.h" 3 900171: template 900171: using __can_invoke_as_void = __enable_if_t< 900171: __and_, __is_invocable<_Callable, _Args...>>::value, 900171: _Res 900171: >; 900171: 900171: template 900171: using __can_invoke_as_nonvoid = __enable_if_t< 900171: __and_<__not_>, 900171: is_convertible::type, 900171: _Res> 900171: >::value, 900171: _Res 900171: >; 900171: 900171: 900171: template 900171: constexpr __can_invoke_as_nonvoid<_Res, _Callable, _Args...> 900171: __invoke_r(_Callable&& __fn, _Args&&... __args) 900171: { 900171: using __result = __invoke_result<_Callable, _Args...>; 900171: using __type = typename __result::type; 900171: using __tag = typename __result::__invoke_type; 900171: return std::__invoke_impl<__type>(__tag{}, std::forward<_Callable>(__fn), 900171: std::forward<_Args>(__args)...); 900171: } 900171: 900171: 900171: template 900171: __can_invoke_as_void<_Res, _Callable, _Args...> 900171: __invoke_r(_Callable&& __fn, _Args&&... __args) 900171: { 900171: using __result = __invoke_result<_Callable, _Args...>; 900171: using __type = typename __result::type; 900171: using __tag = typename __result::__invoke_type; 900171: std::__invoke_impl<__type>(__tag{}, std::forward<_Callable>(__fn), 900171: std::forward<_Args>(__args)...); 900171: } 900171: 900171: 900171: 900171: } 900171: # 42 "/usr/aarch64-linux-gnu/include/c++/12/tuple" 2 3 900171: 900171: 900171: 900171: 900171: 900171: namespace std __attribute__ ((__visibility__ ("default"))) 900171: { 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: template 900171: class tuple; 900171: 900171: template 900171: struct __is_empty_non_tuple : is_empty<_Tp> { }; 900171: 900171: 900171: template 900171: struct __is_empty_non_tuple> : false_type { }; 900171: 900171: 900171: template 900171: using __empty_not_final 900171: = __conditional_t<__is_final(_Tp), false_type, 900171: __is_empty_non_tuple<_Tp>>; 900171: 900171: template::value> 900171: struct _Head_base; 900171: 900171: 900171: template 900171: struct _Head_base<_Idx, _Head, true> 900171: { 900171: constexpr _Head_base() 900171: : _M_head_impl() { } 900171: 900171: constexpr _Head_base(const _Head& __h) 900171: : _M_head_impl(__h) { } 900171: 900171: constexpr _Head_base(const _Head_base&) = default; 900171: constexpr _Head_base(_Head_base&&) = default; 900171: 900171: template 900171: constexpr _Head_base(_UHead&& __h) 900171: : _M_head_impl(std::forward<_UHead>(__h)) { } 900171: 900171: 900171: _Head_base(allocator_arg_t, __uses_alloc0) 900171: : _M_head_impl() { } 900171: 900171: template 900171: 900171: _Head_base(allocator_arg_t, __uses_alloc1<_Alloc> __a) 900171: : _M_head_impl(allocator_arg, *__a._M_a) { } 900171: 900171: template 900171: 900171: _Head_base(allocator_arg_t, __uses_alloc2<_Alloc> __a) 900171: : _M_head_impl(*__a._M_a) { } 900171: 900171: template 900171: 900171: _Head_base(__uses_alloc0, _UHead&& __uhead) 900171: : _M_head_impl(std::forward<_UHead>(__uhead)) { } 900171: 900171: template 900171: 900171: _Head_base(__uses_alloc1<_Alloc> __a, _UHead&& __uhead) 900171: : _M_head_impl(allocator_arg, *__a._M_a, std::forward<_UHead>(__uhead)) 900171: { } 900171: 900171: template 900171: 900171: _Head_base(__uses_alloc2<_Alloc> __a, _UHead&& __uhead) 900171: : _M_head_impl(std::forward<_UHead>(__uhead), *__a._M_a) { } 900171: 900171: static constexpr _Head& 900171: _M_head(_Head_base& __b) noexcept { return __b._M_head_impl; } 900171: 900171: static constexpr const _Head& 900171: _M_head(const _Head_base& __b) noexcept { return __b._M_head_impl; } 900171: 900171: [[__no_unique_address__]] _Head _M_head_impl; 900171: }; 900171: # 186 "/usr/aarch64-linux-gnu/include/c++/12/tuple" 3 900171: template 900171: struct _Head_base<_Idx, _Head, false> 900171: { 900171: constexpr _Head_base() 900171: : _M_head_impl() { } 900171: 900171: constexpr _Head_base(const _Head& __h) 900171: : _M_head_impl(__h) { } 900171: 900171: constexpr _Head_base(const _Head_base&) = default; 900171: constexpr _Head_base(_Head_base&&) = default; 900171: 900171: template 900171: constexpr _Head_base(_UHead&& __h) 900171: : _M_head_impl(std::forward<_UHead>(__h)) { } 900171: 900171: 900171: _Head_base(allocator_arg_t, __uses_alloc0) 900171: : _M_head_impl() { } 900171: 900171: template 900171: 900171: _Head_base(allocator_arg_t, __uses_alloc1<_Alloc> __a) 900171: : _M_head_impl(allocator_arg, *__a._M_a) { } 900171: 900171: template 900171: 900171: _Head_base(allocator_arg_t, __uses_alloc2<_Alloc> __a) 900171: : _M_head_impl(*__a._M_a) { } 900171: 900171: template 900171: 900171: _Head_base(__uses_alloc0, _UHead&& __uhead) 900171: : _M_head_impl(std::forward<_UHead>(__uhead)) { } 900171: 900171: template 900171: 900171: _Head_base(__uses_alloc1<_Alloc> __a, _UHead&& __uhead) 900171: : _M_head_impl(allocator_arg, *__a._M_a, std::forward<_UHead>(__uhead)) 900171: { } 900171: 900171: template 900171: 900171: _Head_base(__uses_alloc2<_Alloc> __a, _UHead&& __uhead) 900171: : _M_head_impl(std::forward<_UHead>(__uhead), *__a._M_a) { } 900171: 900171: static constexpr _Head& 900171: _M_head(_Head_base& __b) noexcept { return __b._M_head_impl; } 900171: 900171: static constexpr const _Head& 900171: _M_head(const _Head_base& __b) noexcept { return __b._M_head_impl; } 900171: 900171: _Head _M_head_impl; 900171: }; 900171: # 249 "/usr/aarch64-linux-gnu/include/c++/12/tuple" 3 900171: template 900171: struct _Tuple_impl; 900171: 900171: 900171: 900171: 900171: 900171: 900171: template 900171: struct _Tuple_impl<_Idx, _Head, _Tail...> 900171: : public _Tuple_impl<_Idx + 1, _Tail...>, 900171: private _Head_base<_Idx, _Head> 900171: { 900171: template friend struct _Tuple_impl; 900171: 900171: typedef _Tuple_impl<_Idx + 1, _Tail...> _Inherited; 900171: typedef _Head_base<_Idx, _Head> _Base; 900171: 900171: static constexpr _Head& 900171: _M_head(_Tuple_impl& __t) noexcept { return _Base::_M_head(__t); } 900171: 900171: static constexpr const _Head& 900171: _M_head(const _Tuple_impl& __t) noexcept { return _Base::_M_head(__t); } 900171: 900171: static constexpr _Inherited& 900171: _M_tail(_Tuple_impl& __t) noexcept { return __t; } 900171: 900171: static constexpr const _Inherited& 900171: _M_tail(const _Tuple_impl& __t) noexcept { return __t; } 900171: 900171: constexpr _Tuple_impl() 900171: : _Inherited(), _Base() { } 900171: 900171: explicit constexpr 900171: _Tuple_impl(const _Head& __head, const _Tail&... __tail) 900171: : _Inherited(__tail...), _Base(__head) 900171: { } 900171: 900171: template> 900171: explicit constexpr 900171: _Tuple_impl(_UHead&& __head, _UTail&&... __tail) 900171: : _Inherited(std::forward<_UTail>(__tail)...), 900171: _Base(std::forward<_UHead>(__head)) 900171: { } 900171: 900171: constexpr _Tuple_impl(const _Tuple_impl&) = default; 900171: 900171: 900171: 900171: _Tuple_impl& operator=(const _Tuple_impl&) = delete; 900171: 900171: _Tuple_impl(_Tuple_impl&&) = default; 900171: 900171: template 900171: constexpr 900171: _Tuple_impl(const _Tuple_impl<_Idx, _UElements...>& __in) 900171: : _Inherited(_Tuple_impl<_Idx, _UElements...>::_M_tail(__in)), 900171: _Base(_Tuple_impl<_Idx, _UElements...>::_M_head(__in)) 900171: { } 900171: 900171: template 900171: constexpr 900171: _Tuple_impl(_Tuple_impl<_Idx, _UHead, _UTails...>&& __in) 900171: : _Inherited(std::move 900171: (_Tuple_impl<_Idx, _UHead, _UTails...>::_M_tail(__in))), 900171: _Base(std::forward<_UHead> 900171: (_Tuple_impl<_Idx, _UHead, _UTails...>::_M_head(__in))) 900171: { } 900171: 900171: template 900171: 900171: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a) 900171: : _Inherited(__tag, __a), 900171: _Base(__tag, __use_alloc<_Head>(__a)) 900171: { } 900171: 900171: template 900171: 900171: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, 900171: const _Head& __head, const _Tail&... __tail) 900171: : _Inherited(__tag, __a, __tail...), 900171: _Base(__use_alloc<_Head, _Alloc, _Head>(__a), __head) 900171: { } 900171: 900171: template> 900171: 900171: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, 900171: _UHead&& __head, _UTail&&... __tail) 900171: : _Inherited(__tag, __a, std::forward<_UTail>(__tail)...), 900171: _Base(__use_alloc<_Head, _Alloc, _UHead>(__a), 900171: std::forward<_UHead>(__head)) 900171: { } 900171: 900171: template 900171: 900171: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, 900171: const _Tuple_impl& __in) 900171: : _Inherited(__tag, __a, _M_tail(__in)), 900171: _Base(__use_alloc<_Head, _Alloc, _Head>(__a), _M_head(__in)) 900171: { } 900171: 900171: template 900171: 900171: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, 900171: _Tuple_impl&& __in) 900171: : _Inherited(__tag, __a, std::move(_M_tail(__in))), 900171: _Base(__use_alloc<_Head, _Alloc, _Head>(__a), 900171: std::forward<_Head>(_M_head(__in))) 900171: { } 900171: 900171: template 900171: 900171: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, 900171: const _Tuple_impl<_Idx, _UHead, _UTails...>& __in) 900171: : _Inherited(__tag, __a, 900171: _Tuple_impl<_Idx, _UHead, _UTails...>::_M_tail(__in)), 900171: _Base(__use_alloc<_Head, _Alloc, const _UHead&>(__a), 900171: _Tuple_impl<_Idx, _UHead, _UTails...>::_M_head(__in)) 900171: { } 900171: 900171: template 900171: 900171: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, 900171: _Tuple_impl<_Idx, _UHead, _UTails...>&& __in) 900171: : _Inherited(__tag, __a, std::move 900171: (_Tuple_impl<_Idx, _UHead, _UTails...>::_M_tail(__in))), 900171: _Base(__use_alloc<_Head, _Alloc, _UHead>(__a), 900171: std::forward<_UHead> 900171: (_Tuple_impl<_Idx, _UHead, _UTails...>::_M_head(__in))) 900171: { } 900171: 900171: template 900171: 900171: void 900171: _M_assign(const _Tuple_impl<_Idx, _UElements...>& __in) 900171: { 900171: _M_head(*this) = _Tuple_impl<_Idx, _UElements...>::_M_head(__in); 900171: _M_tail(*this)._M_assign( 900171: _Tuple_impl<_Idx, _UElements...>::_M_tail(__in)); 900171: } 900171: 900171: template 900171: 900171: void 900171: _M_assign(_Tuple_impl<_Idx, _UHead, _UTails...>&& __in) 900171: { 900171: _M_head(*this) = std::forward<_UHead> 900171: (_Tuple_impl<_Idx, _UHead, _UTails...>::_M_head(__in)); 900171: _M_tail(*this)._M_assign( 900171: std::move(_Tuple_impl<_Idx, _UHead, _UTails...>::_M_tail(__in))); 900171: } 900171: 900171: protected: 900171: 900171: void 900171: _M_swap(_Tuple_impl& __in) 900171: { 900171: using std::swap; 900171: swap(_M_head(*this), _M_head(__in)); 900171: _Inherited::_M_swap(_M_tail(__in)); 900171: } 900171: }; 900171: 900171: 900171: template 900171: struct _Tuple_impl<_Idx, _Head> 900171: : private _Head_base<_Idx, _Head> 900171: { 900171: template friend struct _Tuple_impl; 900171: 900171: typedef _Head_base<_Idx, _Head> _Base; 900171: 900171: static constexpr _Head& 900171: _M_head(_Tuple_impl& __t) noexcept { return _Base::_M_head(__t); } 900171: 900171: static constexpr const _Head& 900171: _M_head(const _Tuple_impl& __t) noexcept { return _Base::_M_head(__t); } 900171: 900171: constexpr 900171: _Tuple_impl() 900171: : _Base() { } 900171: 900171: explicit constexpr 900171: _Tuple_impl(const _Head& __head) 900171: : _Base(__head) 900171: { } 900171: 900171: template 900171: explicit constexpr 900171: _Tuple_impl(_UHead&& __head) 900171: : _Base(std::forward<_UHead>(__head)) 900171: { } 900171: 900171: constexpr _Tuple_impl(const _Tuple_impl&) = default; 900171: 900171: 900171: 900171: _Tuple_impl& operator=(const _Tuple_impl&) = delete; 900171: 900171: 900171: 900171: 900171: constexpr 900171: _Tuple_impl(_Tuple_impl&& __in) 900171: noexcept(is_nothrow_move_constructible<_Head>::value) 900171: : _Base(static_cast<_Base&&>(__in)) 900171: { } 900171: 900171: 900171: template 900171: constexpr 900171: _Tuple_impl(const _Tuple_impl<_Idx, _UHead>& __in) 900171: : _Base(_Tuple_impl<_Idx, _UHead>::_M_head(__in)) 900171: { } 900171: 900171: template 900171: constexpr 900171: _Tuple_impl(_Tuple_impl<_Idx, _UHead>&& __in) 900171: : _Base(std::forward<_UHead>(_Tuple_impl<_Idx, _UHead>::_M_head(__in))) 900171: { } 900171: 900171: template 900171: 900171: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a) 900171: : _Base(__tag, __use_alloc<_Head>(__a)) 900171: { } 900171: 900171: template 900171: 900171: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, 900171: const _Head& __head) 900171: : _Base(__use_alloc<_Head, _Alloc, const _Head&>(__a), __head) 900171: { } 900171: 900171: template 900171: 900171: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, 900171: _UHead&& __head) 900171: : _Base(__use_alloc<_Head, _Alloc, _UHead>(__a), 900171: std::forward<_UHead>(__head)) 900171: { } 900171: 900171: template 900171: 900171: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, 900171: const _Tuple_impl& __in) 900171: : _Base(__use_alloc<_Head, _Alloc, const _Head&>(__a), _M_head(__in)) 900171: { } 900171: 900171: template 900171: 900171: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, 900171: _Tuple_impl&& __in) 900171: : _Base(__use_alloc<_Head, _Alloc, _Head>(__a), 900171: std::forward<_Head>(_M_head(__in))) 900171: { } 900171: 900171: template 900171: 900171: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, 900171: const _Tuple_impl<_Idx, _UHead>& __in) 900171: : _Base(__use_alloc<_Head, _Alloc, const _UHead&>(__a), 900171: _Tuple_impl<_Idx, _UHead>::_M_head(__in)) 900171: { } 900171: 900171: template 900171: 900171: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, 900171: _Tuple_impl<_Idx, _UHead>&& __in) 900171: : _Base(__use_alloc<_Head, _Alloc, _UHead>(__a), 900171: std::forward<_UHead>(_Tuple_impl<_Idx, _UHead>::_M_head(__in))) 900171: { } 900171: 900171: template 900171: 900171: void 900171: _M_assign(const _Tuple_impl<_Idx, _UHead>& __in) 900171: { 900171: _M_head(*this) = _Tuple_impl<_Idx, _UHead>::_M_head(__in); 900171: } 900171: 900171: template 900171: 900171: void 900171: _M_assign(_Tuple_impl<_Idx, _UHead>&& __in) 900171: { 900171: _M_head(*this) 900171: = std::forward<_UHead>(_Tuple_impl<_Idx, _UHead>::_M_head(__in)); 900171: } 900171: 900171: protected: 900171: 900171: void 900171: _M_swap(_Tuple_impl& __in) 900171: { 900171: using std::swap; 900171: swap(_M_head(*this), _M_head(__in)); 900171: } 900171: }; 900171: 900171: 900171: 900171: template 900171: struct _TupleConstraints 900171: { 900171: 900171: 900171: 900171: template 900171: static constexpr bool __is_implicitly_constructible() 900171: { 900171: return __and_..., 900171: is_convertible<_UTypes, _Types>... 900171: >::value; 900171: } 900171: 900171: 900171: 900171: 900171: template 900171: static constexpr bool __is_explicitly_constructible() 900171: { 900171: return __and_..., 900171: __not_<__and_...>> 900171: >::value; 900171: } 900171: 900171: static constexpr bool __is_implicitly_default_constructible() 900171: { 900171: return __and_... 900171: >::value; 900171: } 900171: 900171: static constexpr bool __is_explicitly_default_constructible() 900171: { 900171: return __and_..., 900171: __not_<__and_< 900171: std::__is_implicitly_default_constructible<_Types>...> 900171: >>::value; 900171: } 900171: }; 900171: 900171: 900171: 900171: template 900171: struct _TupleConstraints 900171: { 900171: template 900171: static constexpr bool __is_implicitly_constructible() 900171: { return false; } 900171: 900171: template 900171: static constexpr bool __is_explicitly_constructible() 900171: { return false; } 900171: }; 900171: 900171: 900171: template 900171: class tuple : public _Tuple_impl<0, _Elements...> 900171: { 900171: typedef _Tuple_impl<0, _Elements...> _Inherited; 900171: 900171: template 900171: using _TCC = _TupleConstraints<_Cond, _Elements...>; 900171: 900171: 900171: template 900171: using _ImplicitDefaultCtor = __enable_if_t< 900171: _TCC<_Dummy>::__is_implicitly_default_constructible(), 900171: bool>; 900171: 900171: 900171: template 900171: using _ExplicitDefaultCtor = __enable_if_t< 900171: _TCC<_Dummy>::__is_explicitly_default_constructible(), 900171: bool>; 900171: 900171: 900171: template 900171: using _ImplicitCtor = __enable_if_t< 900171: _TCC<_Cond>::template __is_implicitly_constructible<_Args...>(), 900171: bool>; 900171: 900171: 900171: template 900171: using _ExplicitCtor = __enable_if_t< 900171: _TCC<_Cond>::template __is_explicitly_constructible<_Args...>(), 900171: bool>; 900171: 900171: template 900171: static constexpr 900171: __enable_if_t 900171: __assignable() 900171: { return __and_...>::value; } 900171: 900171: 900171: template 900171: static constexpr bool __nothrow_assignable() 900171: { 900171: return 900171: __and_...>::value; 900171: } 900171: 900171: 900171: template 900171: static constexpr bool __nothrow_constructible() 900171: { 900171: return 900171: __and_...>::value; 900171: } 900171: 900171: 900171: template 900171: static constexpr bool __valid_args() 900171: { 900171: return sizeof...(_Elements) == 1 900171: && !is_same>::value; 900171: } 900171: 900171: 900171: template 900171: static constexpr bool __valid_args() 900171: { return (sizeof...(_Tail) + 2) == sizeof...(_Elements); } 900171: # 684 "/usr/aarch64-linux-gnu/include/c++/12/tuple" 3 900171: template> 900171: struct _UseOtherCtor 900171: : false_type 900171: { }; 900171: 900171: 900171: template 900171: struct _UseOtherCtor<_Tuple, tuple<_Tp>, tuple<_Up>> 900171: : __or_, is_constructible<_Tp, _Tuple>> 900171: { }; 900171: 900171: 900171: template 900171: struct _UseOtherCtor<_Tuple, tuple<_Tp>, tuple<_Tp>> 900171: : true_type 900171: { }; 900171: 900171: 900171: 900171: 900171: template 900171: static constexpr bool __use_other_ctor() 900171: { return _UseOtherCtor<_Tuple>::value; } 900171: 900171: public: 900171: template::value> = true> 900171: constexpr 900171: tuple() 900171: noexcept(__and_...>::value) 900171: : _Inherited() { } 900171: 900171: template::value> = false> 900171: explicit constexpr 900171: tuple() 900171: noexcept(__and_...>::value) 900171: : _Inherited() { } 900171: 900171: template= 1), 900171: _ImplicitCtor<_NotEmpty, const _Elements&...> = true> 900171: constexpr 900171: tuple(const _Elements&... __elements) 900171: noexcept(__nothrow_constructible()) 900171: : _Inherited(__elements...) { } 900171: 900171: template= 1), 900171: _ExplicitCtor<_NotEmpty, const _Elements&...> = false> 900171: explicit constexpr 900171: tuple(const _Elements&... __elements) 900171: noexcept(__nothrow_constructible()) 900171: : _Inherited(__elements...) { } 900171: 900171: template(), 900171: _ImplicitCtor<_Valid, _UElements...> = true> 900171: constexpr 900171: tuple(_UElements&&... __elements) 900171: noexcept(__nothrow_constructible<_UElements...>()) 900171: : _Inherited(std::forward<_UElements>(__elements)...) { } 900171: 900171: template(), 900171: _ExplicitCtor<_Valid, _UElements...> = false> 900171: explicit constexpr 900171: tuple(_UElements&&... __elements) 900171: noexcept(__nothrow_constructible<_UElements...>()) 900171: : _Inherited(std::forward<_UElements>(__elements)...) { } 900171: 900171: constexpr tuple(const tuple&) = default; 900171: 900171: constexpr tuple(tuple&&) = default; 900171: 900171: template&>(), 900171: _ImplicitCtor<_Valid, const _UElements&...> = true> 900171: constexpr 900171: tuple(const tuple<_UElements...>& __in) 900171: noexcept(__nothrow_constructible()) 900171: : _Inherited(static_cast&>(__in)) 900171: { } 900171: 900171: template&>(), 900171: _ExplicitCtor<_Valid, const _UElements&...> = false> 900171: explicit constexpr 900171: tuple(const tuple<_UElements...>& __in) 900171: noexcept(__nothrow_constructible()) 900171: : _Inherited(static_cast&>(__in)) 900171: { } 900171: 900171: template&&>(), 900171: _ImplicitCtor<_Valid, _UElements...> = true> 900171: constexpr 900171: tuple(tuple<_UElements...>&& __in) 900171: noexcept(__nothrow_constructible<_UElements...>()) 900171: : _Inherited(static_cast<_Tuple_impl<0, _UElements...>&&>(__in)) { } 900171: 900171: template&&>(), 900171: _ExplicitCtor<_Valid, _UElements...> = false> 900171: explicit constexpr 900171: tuple(tuple<_UElements...>&& __in) 900171: noexcept(__nothrow_constructible<_UElements...>()) 900171: : _Inherited(static_cast<_Tuple_impl<0, _UElements...>&&>(__in)) { } 900171: 900171: 900171: 900171: template::value> = true> 900171: 900171: tuple(allocator_arg_t __tag, const _Alloc& __a) 900171: : _Inherited(__tag, __a) { } 900171: 900171: template= 1), 900171: _ImplicitCtor<_NotEmpty, const _Elements&...> = true> 900171: 900171: tuple(allocator_arg_t __tag, const _Alloc& __a, 900171: const _Elements&... __elements) 900171: : _Inherited(__tag, __a, __elements...) { } 900171: 900171: template= 1), 900171: _ExplicitCtor<_NotEmpty, const _Elements&...> = false> 900171: 900171: explicit 900171: tuple(allocator_arg_t __tag, const _Alloc& __a, 900171: const _Elements&... __elements) 900171: : _Inherited(__tag, __a, __elements...) { } 900171: 900171: template(), 900171: _ImplicitCtor<_Valid, _UElements...> = true> 900171: 900171: tuple(allocator_arg_t __tag, const _Alloc& __a, 900171: _UElements&&... __elements) 900171: : _Inherited(__tag, __a, std::forward<_UElements>(__elements)...) 900171: { } 900171: 900171: template(), 900171: _ExplicitCtor<_Valid, _UElements...> = false> 900171: 900171: explicit 900171: tuple(allocator_arg_t __tag, const _Alloc& __a, 900171: _UElements&&... __elements) 900171: : _Inherited(__tag, __a, std::forward<_UElements>(__elements)...) 900171: { } 900171: 900171: template 900171: 900171: tuple(allocator_arg_t __tag, const _Alloc& __a, const tuple& __in) 900171: : _Inherited(__tag, __a, static_cast(__in)) { } 900171: 900171: template 900171: 900171: tuple(allocator_arg_t __tag, const _Alloc& __a, tuple&& __in) 900171: : _Inherited(__tag, __a, static_cast<_Inherited&&>(__in)) { } 900171: 900171: template&>(), 900171: _ImplicitCtor<_Valid, const _UElements&...> = true> 900171: 900171: tuple(allocator_arg_t __tag, const _Alloc& __a, 900171: const tuple<_UElements...>& __in) 900171: : _Inherited(__tag, __a, 900171: static_cast&>(__in)) 900171: { } 900171: 900171: template&>(), 900171: _ExplicitCtor<_Valid, const _UElements&...> = false> 900171: 900171: explicit 900171: tuple(allocator_arg_t __tag, const _Alloc& __a, 900171: const tuple<_UElements...>& __in) 900171: : _Inherited(__tag, __a, 900171: static_cast&>(__in)) 900171: { } 900171: 900171: template&&>(), 900171: _ImplicitCtor<_Valid, _UElements...> = true> 900171: 900171: tuple(allocator_arg_t __tag, const _Alloc& __a, 900171: tuple<_UElements...>&& __in) 900171: : _Inherited(__tag, __a, 900171: static_cast<_Tuple_impl<0, _UElements...>&&>(__in)) 900171: { } 900171: 900171: template&&>(), 900171: _ExplicitCtor<_Valid, _UElements...> = false> 900171: 900171: explicit 900171: tuple(allocator_arg_t __tag, const _Alloc& __a, 900171: tuple<_UElements...>&& __in) 900171: : _Inherited(__tag, __a, 900171: static_cast<_Tuple_impl<0, _UElements...>&&>(__in)) 900171: { } 900171: 900171: 900171: 900171: 900171: tuple& 900171: operator=(__conditional_t<__assignable(), 900171: const tuple&, 900171: const __nonesuch&> __in) 900171: noexcept(__nothrow_assignable()) 900171: { 900171: this->_M_assign(__in); 900171: return *this; 900171: } 900171: 900171: 900171: tuple& 900171: operator=(__conditional_t<__assignable<_Elements...>(), 900171: tuple&&, 900171: __nonesuch&&> __in) 900171: noexcept(__nothrow_assignable<_Elements...>()) 900171: { 900171: this->_M_assign(std::move(__in)); 900171: return *this; 900171: } 900171: 900171: template 900171: 900171: __enable_if_t<__assignable(), tuple&> 900171: operator=(const tuple<_UElements...>& __in) 900171: noexcept(__nothrow_assignable()) 900171: { 900171: this->_M_assign(__in); 900171: return *this; 900171: } 900171: 900171: template 900171: 900171: __enable_if_t<__assignable<_UElements...>(), tuple&> 900171: operator=(tuple<_UElements...>&& __in) 900171: noexcept(__nothrow_assignable<_UElements...>()) 900171: { 900171: this->_M_assign(std::move(__in)); 900171: return *this; 900171: } 900171: 900171: 900171: 900171: void 900171: swap(tuple& __in) 900171: noexcept(__and_<__is_nothrow_swappable<_Elements>...>::value) 900171: { _Inherited::_M_swap(__in); } 900171: }; 900171: # 960 "/usr/aarch64-linux-gnu/include/c++/12/tuple" 3 900171: template<> 900171: class tuple<> 900171: { 900171: public: 900171: 900171: void swap(tuple&) noexcept { } 900171: 900171: 900171: tuple() = default; 900171: 900171: template 900171: 900171: tuple(allocator_arg_t, const _Alloc&) noexcept { } 900171: template 900171: 900171: tuple(allocator_arg_t, const _Alloc&, const tuple&) noexcept { } 900171: }; 900171: 900171: 900171: 900171: template 900171: class tuple<_T1, _T2> : public _Tuple_impl<0, _T1, _T2> 900171: { 900171: typedef _Tuple_impl<0, _T1, _T2> _Inherited; 900171: 900171: 900171: template 900171: using _ImplicitDefaultCtor = __enable_if_t< 900171: _TupleConstraints<_Dummy, _U1, _U2>:: 900171: __is_implicitly_default_constructible(), 900171: bool>; 900171: 900171: 900171: template 900171: using _ExplicitDefaultCtor = __enable_if_t< 900171: _TupleConstraints<_Dummy, _U1, _U2>:: 900171: __is_explicitly_default_constructible(), 900171: bool>; 900171: 900171: template 900171: using _TCC = _TupleConstraints<_Dummy, _T1, _T2>; 900171: 900171: 900171: template 900171: using _ImplicitCtor = __enable_if_t< 900171: _TCC<_Cond>::template __is_implicitly_constructible<_U1, _U2>(), 900171: bool>; 900171: 900171: 900171: template 900171: using _ExplicitCtor = __enable_if_t< 900171: _TCC<_Cond>::template __is_explicitly_constructible<_U1, _U2>(), 900171: bool>; 900171: 900171: template 900171: static constexpr bool __assignable() 900171: { 900171: return __and_, 900171: is_assignable<_T2&, _U2>>::value; 900171: } 900171: 900171: template 900171: static constexpr bool __nothrow_assignable() 900171: { 900171: return __and_, 900171: is_nothrow_assignable<_T2&, _U2>>::value; 900171: } 900171: 900171: template 900171: static constexpr bool __nothrow_constructible() 900171: { 900171: return __and_, 900171: is_nothrow_constructible<_T2, _U2>>::value; 900171: } 900171: 900171: static constexpr bool __nothrow_default_constructible() 900171: { 900171: return __and_, 900171: is_nothrow_default_constructible<_T2>>::value; 900171: } 900171: 900171: template 900171: static constexpr bool __is_alloc_arg() 900171: { return is_same<__remove_cvref_t<_U1>, allocator_arg_t>::value; } 900171: 900171: public: 900171: template = true> 900171: constexpr 900171: tuple() 900171: noexcept(__nothrow_default_constructible()) 900171: : _Inherited() { } 900171: 900171: template = false> 900171: explicit constexpr 900171: tuple() 900171: noexcept(__nothrow_default_constructible()) 900171: : _Inherited() { } 900171: 900171: template = true> 900171: constexpr 900171: tuple(const _T1& __a1, const _T2& __a2) 900171: noexcept(__nothrow_constructible()) 900171: : _Inherited(__a1, __a2) { } 900171: 900171: template = false> 900171: explicit constexpr 900171: tuple(const _T1& __a1, const _T2& __a2) 900171: noexcept(__nothrow_constructible()) 900171: : _Inherited(__a1, __a2) { } 900171: 900171: template(), _U1, _U2> = true> 900171: constexpr 900171: tuple(_U1&& __a1, _U2&& __a2) 900171: noexcept(__nothrow_constructible<_U1, _U2>()) 900171: : _Inherited(std::forward<_U1>(__a1), std::forward<_U2>(__a2)) { } 900171: 900171: template(), _U1, _U2> = false> 900171: explicit constexpr 900171: tuple(_U1&& __a1, _U2&& __a2) 900171: noexcept(__nothrow_constructible<_U1, _U2>()) 900171: : _Inherited(std::forward<_U1>(__a1), std::forward<_U2>(__a2)) { } 900171: 900171: constexpr tuple(const tuple&) = default; 900171: 900171: constexpr tuple(tuple&&) = default; 900171: 900171: template = true> 900171: constexpr 900171: tuple(const tuple<_U1, _U2>& __in) 900171: noexcept(__nothrow_constructible()) 900171: : _Inherited(static_cast&>(__in)) { } 900171: 900171: template = false> 900171: explicit constexpr 900171: tuple(const tuple<_U1, _U2>& __in) 900171: noexcept(__nothrow_constructible()) 900171: : _Inherited(static_cast&>(__in)) { } 900171: 900171: template = true> 900171: constexpr 900171: tuple(tuple<_U1, _U2>&& __in) 900171: noexcept(__nothrow_constructible<_U1, _U2>()) 900171: : _Inherited(static_cast<_Tuple_impl<0, _U1, _U2>&&>(__in)) { } 900171: 900171: template = false> 900171: explicit constexpr 900171: tuple(tuple<_U1, _U2>&& __in) 900171: noexcept(__nothrow_constructible<_U1, _U2>()) 900171: : _Inherited(static_cast<_Tuple_impl<0, _U1, _U2>&&>(__in)) { } 900171: 900171: template = true> 900171: constexpr 900171: tuple(const pair<_U1, _U2>& __in) 900171: noexcept(__nothrow_constructible()) 900171: : _Inherited(__in.first, __in.second) { } 900171: 900171: template = false> 900171: explicit constexpr 900171: tuple(const pair<_U1, _U2>& __in) 900171: noexcept(__nothrow_constructible()) 900171: : _Inherited(__in.first, __in.second) { } 900171: 900171: template = true> 900171: constexpr 900171: tuple(pair<_U1, _U2>&& __in) 900171: noexcept(__nothrow_constructible<_U1, _U2>()) 900171: : _Inherited(std::forward<_U1>(__in.first), 900171: std::forward<_U2>(__in.second)) { } 900171: 900171: template = false> 900171: explicit constexpr 900171: tuple(pair<_U1, _U2>&& __in) 900171: noexcept(__nothrow_constructible<_U1, _U2>()) 900171: : _Inherited(std::forward<_U1>(__in.first), 900171: std::forward<_U2>(__in.second)) { } 900171: 900171: 900171: 900171: template::value, _T1, _T2> = true> 900171: 900171: tuple(allocator_arg_t __tag, const _Alloc& __a) 900171: : _Inherited(__tag, __a) { } 900171: 900171: template = true> 900171: 900171: tuple(allocator_arg_t __tag, const _Alloc& __a, 900171: const _T1& __a1, const _T2& __a2) 900171: : _Inherited(__tag, __a, __a1, __a2) { } 900171: 900171: template = false> 900171: explicit 900171: 900171: tuple(allocator_arg_t __tag, const _Alloc& __a, 900171: const _T1& __a1, const _T2& __a2) 900171: : _Inherited(__tag, __a, __a1, __a2) { } 900171: 900171: template = true> 900171: 900171: tuple(allocator_arg_t __tag, const _Alloc& __a, _U1&& __a1, _U2&& __a2) 900171: : _Inherited(__tag, __a, std::forward<_U1>(__a1), 900171: std::forward<_U2>(__a2)) { } 900171: 900171: template = false> 900171: explicit 900171: 900171: tuple(allocator_arg_t __tag, const _Alloc& __a, 900171: _U1&& __a1, _U2&& __a2) 900171: : _Inherited(__tag, __a, std::forward<_U1>(__a1), 900171: std::forward<_U2>(__a2)) { } 900171: 900171: template 900171: 900171: tuple(allocator_arg_t __tag, const _Alloc& __a, const tuple& __in) 900171: : _Inherited(__tag, __a, static_cast(__in)) { } 900171: 900171: template 900171: 900171: tuple(allocator_arg_t __tag, const _Alloc& __a, tuple&& __in) 900171: : _Inherited(__tag, __a, static_cast<_Inherited&&>(__in)) { } 900171: 900171: template = true> 900171: 900171: tuple(allocator_arg_t __tag, const _Alloc& __a, 900171: const tuple<_U1, _U2>& __in) 900171: : _Inherited(__tag, __a, 900171: static_cast&>(__in)) 900171: { } 900171: 900171: template = false> 900171: explicit 900171: 900171: tuple(allocator_arg_t __tag, const _Alloc& __a, 900171: const tuple<_U1, _U2>& __in) 900171: : _Inherited(__tag, __a, 900171: static_cast&>(__in)) 900171: { } 900171: 900171: template = true> 900171: 900171: tuple(allocator_arg_t __tag, const _Alloc& __a, tuple<_U1, _U2>&& __in) 900171: : _Inherited(__tag, __a, static_cast<_Tuple_impl<0, _U1, _U2>&&>(__in)) 900171: { } 900171: 900171: template = false> 900171: explicit 900171: 900171: tuple(allocator_arg_t __tag, const _Alloc& __a, tuple<_U1, _U2>&& __in) 900171: : _Inherited(__tag, __a, static_cast<_Tuple_impl<0, _U1, _U2>&&>(__in)) 900171: { } 900171: 900171: template = true> 900171: 900171: tuple(allocator_arg_t __tag, const _Alloc& __a, 900171: const pair<_U1, _U2>& __in) 900171: : _Inherited(__tag, __a, __in.first, __in.second) { } 900171: 900171: template = false> 900171: explicit 900171: 900171: tuple(allocator_arg_t __tag, const _Alloc& __a, 900171: const pair<_U1, _U2>& __in) 900171: : _Inherited(__tag, __a, __in.first, __in.second) { } 900171: 900171: template = true> 900171: 900171: tuple(allocator_arg_t __tag, const _Alloc& __a, pair<_U1, _U2>&& __in) 900171: : _Inherited(__tag, __a, std::forward<_U1>(__in.first), 900171: std::forward<_U2>(__in.second)) { } 900171: 900171: template = false> 900171: explicit 900171: 900171: tuple(allocator_arg_t __tag, const _Alloc& __a, pair<_U1, _U2>&& __in) 900171: : _Inherited(__tag, __a, std::forward<_U1>(__in.first), 900171: std::forward<_U2>(__in.second)) { } 900171: 900171: 900171: 900171: 900171: tuple& 900171: operator=(__conditional_t<__assignable(), 900171: const tuple&, 900171: const __nonesuch&> __in) 900171: noexcept(__nothrow_assignable()) 900171: { 900171: this->_M_assign(__in); 900171: return *this; 900171: } 900171: 900171: 900171: tuple& 900171: operator=(__conditional_t<__assignable<_T1, _T2>(), 900171: tuple&&, 900171: __nonesuch&&> __in) 900171: noexcept(__nothrow_assignable<_T1, _T2>()) 900171: { 900171: this->_M_assign(std::move(__in)); 900171: return *this; 900171: } 900171: 900171: template 900171: 900171: __enable_if_t<__assignable(), tuple&> 900171: operator=(const tuple<_U1, _U2>& __in) 900171: noexcept(__nothrow_assignable()) 900171: { 900171: this->_M_assign(__in); 900171: return *this; 900171: } 900171: 900171: template 900171: 900171: __enable_if_t<__assignable<_U1, _U2>(), tuple&> 900171: operator=(tuple<_U1, _U2>&& __in) 900171: noexcept(__nothrow_assignable<_U1, _U2>()) 900171: { 900171: this->_M_assign(std::move(__in)); 900171: return *this; 900171: } 900171: 900171: template 900171: 900171: __enable_if_t<__assignable(), tuple&> 900171: operator=(const pair<_U1, _U2>& __in) 900171: noexcept(__nothrow_assignable()) 900171: { 900171: this->_M_head(*this) = __in.first; 900171: this->_M_tail(*this)._M_head(*this) = __in.second; 900171: return *this; 900171: } 900171: 900171: template 900171: 900171: __enable_if_t<__assignable<_U1, _U2>(), tuple&> 900171: operator=(pair<_U1, _U2>&& __in) 900171: noexcept(__nothrow_assignable<_U1, _U2>()) 900171: { 900171: this->_M_head(*this) = std::forward<_U1>(__in.first); 900171: this->_M_tail(*this)._M_head(*this) = std::forward<_U2>(__in.second); 900171: return *this; 900171: } 900171: 900171: 900171: void 900171: swap(tuple& __in) 900171: noexcept(__and_<__is_nothrow_swappable<_T1>, 900171: __is_nothrow_swappable<_T2>>::value) 900171: { _Inherited::_M_swap(__in); } 900171: }; 900171: 900171: 900171: 900171: template 900171: struct tuple_size> 900171: : public integral_constant { }; 900171: # 1354 "/usr/aarch64-linux-gnu/include/c++/12/tuple" 3 900171: template 900171: struct tuple_element<__i, tuple<_Types...>> 900171: { 900171: static_assert(__i < sizeof...(_Types), "tuple index must be in range"); 900171: 900171: using type = typename _Nth_type<__i, _Types...>::type; 900171: }; 900171: 900171: template 900171: constexpr _Head& 900171: __get_helper(_Tuple_impl<__i, _Head, _Tail...>& __t) noexcept 900171: { return _Tuple_impl<__i, _Head, _Tail...>::_M_head(__t); } 900171: 900171: template 900171: constexpr const _Head& 900171: __get_helper(const _Tuple_impl<__i, _Head, _Tail...>& __t) noexcept 900171: { return _Tuple_impl<__i, _Head, _Tail...>::_M_head(__t); } 900171: 900171: 900171: template 900171: __enable_if_t<(__i >= sizeof...(_Types))> 900171: __get_helper(const tuple<_Types...>&) = delete; 900171: 900171: 900171: template 900171: constexpr __tuple_element_t<__i, tuple<_Elements...>>& 900171: get(tuple<_Elements...>& __t) noexcept 900171: { return std::__get_helper<__i>(__t); } 900171: 900171: 900171: template 900171: constexpr const __tuple_element_t<__i, tuple<_Elements...>>& 900171: get(const tuple<_Elements...>& __t) noexcept 900171: { return std::__get_helper<__i>(__t); } 900171: 900171: 900171: template 900171: constexpr __tuple_element_t<__i, tuple<_Elements...>>&& 900171: get(tuple<_Elements...>&& __t) noexcept 900171: { 900171: typedef __tuple_element_t<__i, tuple<_Elements...>> __element_type; 900171: return std::forward<__element_type>(std::__get_helper<__i>(__t)); 900171: } 900171: 900171: 900171: template 900171: constexpr const __tuple_element_t<__i, tuple<_Elements...>>&& 900171: get(const tuple<_Elements...>&& __t) noexcept 900171: { 900171: typedef __tuple_element_t<__i, tuple<_Elements...>> __element_type; 900171: return std::forward(std::__get_helper<__i>(__t)); 900171: } 900171: 900171: 900171: 900171: template 900171: constexpr __enable_if_t<(__i >= sizeof...(_Elements))> 900171: get(const tuple<_Elements...>&) = delete; 900171: # 1465 "/usr/aarch64-linux-gnu/include/c++/12/tuple" 3 900171: template 900171: struct __tuple_compare 900171: { 900171: static constexpr bool 900171: __eq(const _Tp& __t, const _Up& __u) 900171: { 900171: return bool(std::get<__i>(__t) == std::get<__i>(__u)) 900171: && __tuple_compare<_Tp, _Up, __i + 1, __size>::__eq(__t, __u); 900171: } 900171: 900171: static constexpr bool 900171: __less(const _Tp& __t, const _Up& __u) 900171: { 900171: return bool(std::get<__i>(__t) < std::get<__i>(__u)) 900171: || (!bool(std::get<__i>(__u) < std::get<__i>(__t)) 900171: && __tuple_compare<_Tp, _Up, __i + 1, __size>::__less(__t, __u)); 900171: } 900171: }; 900171: 900171: template 900171: struct __tuple_compare<_Tp, _Up, __size, __size> 900171: { 900171: static constexpr bool 900171: __eq(const _Tp&, const _Up&) { return true; } 900171: 900171: static constexpr bool 900171: __less(const _Tp&, const _Up&) { return false; } 900171: }; 900171: 900171: template 900171: constexpr bool 900171: operator==(const tuple<_TElements...>& __t, 900171: const tuple<_UElements...>& __u) 900171: { 900171: static_assert(sizeof...(_TElements) == sizeof...(_UElements), 900171: "tuple objects can only be compared if they have equal sizes."); 900171: using __compare = __tuple_compare, 900171: tuple<_UElements...>, 900171: 0, sizeof...(_TElements)>; 900171: return __compare::__eq(__t, __u); 900171: } 900171: # 1536 "/usr/aarch64-linux-gnu/include/c++/12/tuple" 3 900171: template 900171: constexpr bool 900171: operator<(const tuple<_TElements...>& __t, 900171: const tuple<_UElements...>& __u) 900171: { 900171: static_assert(sizeof...(_TElements) == sizeof...(_UElements), 900171: "tuple objects can only be compared if they have equal sizes."); 900171: using __compare = __tuple_compare, 900171: tuple<_UElements...>, 900171: 0, sizeof...(_TElements)>; 900171: return __compare::__less(__t, __u); 900171: } 900171: 900171: template 900171: constexpr bool 900171: operator!=(const tuple<_TElements...>& __t, 900171: const tuple<_UElements...>& __u) 900171: { return !(__t == __u); } 900171: 900171: template 900171: constexpr bool 900171: operator>(const tuple<_TElements...>& __t, 900171: const tuple<_UElements...>& __u) 900171: { return __u < __t; } 900171: 900171: template 900171: constexpr bool 900171: operator<=(const tuple<_TElements...>& __t, 900171: const tuple<_UElements...>& __u) 900171: { return !(__u < __t); } 900171: 900171: template 900171: constexpr bool 900171: operator>=(const tuple<_TElements...>& __t, 900171: const tuple<_UElements...>& __u) 900171: { return !(__t < __u); } 900171: 900171: 900171: 900171: template 900171: constexpr tuple::__type...> 900171: make_tuple(_Elements&&... __args) 900171: { 900171: typedef tuple::__type...> 900171: __result_type; 900171: return __result_type(std::forward<_Elements>(__args)...); 900171: } 900171: 900171: 900171: 900171: 900171: template 900171: constexpr tuple<_Elements&&...> 900171: forward_as_tuple(_Elements&&... __args) noexcept 900171: { return tuple<_Elements&&...>(std::forward<_Elements>(__args)...); } 900171: 900171: 900171: 900171: 900171: template struct array; 900171: 900171: template 900171: constexpr _Tp& 900171: get(array<_Tp, _Nm>&) noexcept; 900171: 900171: template 900171: constexpr _Tp&& 900171: get(array<_Tp, _Nm>&&) noexcept; 900171: 900171: template 900171: constexpr const _Tp& 900171: get(const array<_Tp, _Nm>&) noexcept; 900171: 900171: template 900171: constexpr const _Tp&& 900171: get(const array<_Tp, _Nm>&&) noexcept; 900171: 900171: 900171: template 900171: struct __make_tuple_impl; 900171: 900171: template 900171: struct __make_tuple_impl<_Idx, tuple<_Tp...>, _Tuple, _Nm> 900171: : __make_tuple_impl<_Idx + 1, 900171: tuple<_Tp..., __tuple_element_t<_Idx, _Tuple>>, 900171: _Tuple, _Nm> 900171: { }; 900171: 900171: template 900171: struct __make_tuple_impl<_Nm, tuple<_Tp...>, _Tuple, _Nm> 900171: { 900171: typedef tuple<_Tp...> __type; 900171: }; 900171: 900171: template 900171: struct __do_make_tuple 900171: : __make_tuple_impl<0, tuple<>, _Tuple, tuple_size<_Tuple>::value> 900171: { }; 900171: 900171: 900171: template 900171: struct __make_tuple 900171: : public __do_make_tuple<__remove_cvref_t<_Tuple>> 900171: { }; 900171: 900171: 900171: template 900171: struct __combine_tuples; 900171: 900171: template<> 900171: struct __combine_tuples<> 900171: { 900171: typedef tuple<> __type; 900171: }; 900171: 900171: template 900171: struct __combine_tuples> 900171: { 900171: typedef tuple<_Ts...> __type; 900171: }; 900171: 900171: template 900171: struct __combine_tuples, tuple<_T2s...>, _Rem...> 900171: { 900171: typedef typename __combine_tuples, 900171: _Rem...>::__type __type; 900171: }; 900171: 900171: 900171: template 900171: struct __tuple_cat_result 900171: { 900171: typedef typename __combine_tuples 900171: ::__type...>::__type __type; 900171: }; 900171: 900171: 900171: 900171: template 900171: struct __make_1st_indices; 900171: 900171: template<> 900171: struct __make_1st_indices<> 900171: { 900171: typedef _Index_tuple<> __type; 900171: }; 900171: 900171: template 900171: struct __make_1st_indices<_Tp, _Tpls...> 900171: { 900171: typedef typename _Build_index_tuple::type>::value>::__type __type; 900171: }; 900171: 900171: 900171: 900171: 900171: template 900171: struct __tuple_concater; 900171: 900171: template 900171: struct __tuple_concater<_Ret, _Index_tuple<_Is...>, _Tp, _Tpls...> 900171: { 900171: template 900171: static constexpr _Ret 900171: _S_do(_Tp&& __tp, _Tpls&&... __tps, _Us&&... __us) 900171: { 900171: typedef typename __make_1st_indices<_Tpls...>::__type __idx; 900171: typedef __tuple_concater<_Ret, __idx, _Tpls...> __next; 900171: return __next::_S_do(std::forward<_Tpls>(__tps)..., 900171: std::forward<_Us>(__us)..., 900171: std::get<_Is>(std::forward<_Tp>(__tp))...); 900171: } 900171: }; 900171: 900171: template 900171: struct __tuple_concater<_Ret, _Index_tuple<>> 900171: { 900171: template 900171: static constexpr _Ret 900171: _S_do(_Us&&... __us) 900171: { 900171: return _Ret(std::forward<_Us>(__us)...); 900171: } 900171: }; 900171: 900171: template 900171: struct __is_tuple_like_impl> : true_type 900171: { }; 900171: 900171: 900171: template...>::value>::type> 900171: constexpr auto 900171: tuple_cat(_Tpls&&... __tpls) 900171: -> typename __tuple_cat_result<_Tpls...>::__type 900171: { 900171: typedef typename __tuple_cat_result<_Tpls...>::__type __ret; 900171: typedef typename __make_1st_indices<_Tpls...>::__type __idx; 900171: typedef __tuple_concater<__ret, __idx, _Tpls...> __concater; 900171: return __concater::_S_do(std::forward<_Tpls>(__tpls)...); 900171: } 900171: 900171: 900171: 900171: 900171: template 900171: constexpr tuple<_Elements&...> 900171: tie(_Elements&... __args) noexcept 900171: { return tuple<_Elements&...>(__args...); } 900171: 900171: 900171: template 900171: 900171: inline 900171: 900171: 900171: 900171: 900171: 900171: void 900171: 900171: swap(tuple<_Elements...>& __x, tuple<_Elements...>& __y) 900171: noexcept(noexcept(__x.swap(__y))) 900171: { __x.swap(__y); } 900171: # 1773 "/usr/aarch64-linux-gnu/include/c++/12/tuple" 3 900171: struct _Swallow_assign 900171: { 900171: template 900171: const _Swallow_assign& 900171: operator=(const _Tp&) const 900171: { return *this; } 900171: }; 900171: 900171: 900171: 900171: constexpr _Swallow_assign ignore{}; 900171: 900171: 900171: template 900171: struct uses_allocator, _Alloc> : true_type { }; 900171: # 1798 "/usr/aarch64-linux-gnu/include/c++/12/tuple" 3 900171: template 900171: template 900171: 900171: inline 900171: pair<_T1, _T2>:: 900171: pair(piecewise_construct_t, 900171: tuple<_Args1...> __first, tuple<_Args2...> __second) 900171: : pair(__first, __second, 900171: typename _Build_index_tuple::__type(), 900171: typename _Build_index_tuple::__type()) 900171: { } 900171: 900171: template 900171: template 900171: inline 900171: pair<_T1, _T2>:: 900171: pair(tuple<_Args1...>& __tuple1, tuple<_Args2...>& __tuple2, 900171: _Index_tuple<_Indexes1...>, _Index_tuple<_Indexes2...>) 900171: : first(std::forward<_Args1>(std::get<_Indexes1>(__tuple1))...), 900171: second(std::forward<_Args2>(std::get<_Indexes2>(__tuple2))...) 900171: { } 900171: # 1888 "/usr/aarch64-linux-gnu/include/c++/12/tuple" 3 900171: 900171: } 900171: # 37 "/usr/aarch64-linux-gnu/include/c++/12/bits/unique_ptr.h" 2 3 900171: # 1 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_function.h" 1 3 900171: # 63 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_function.h" 3 900171: namespace std __attribute__ ((__visibility__ ("default"))) 900171: { 900171: 900171: # 116 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_function.h" 3 900171: template 900171: struct unary_function 900171: { 900171: 900171: typedef _Arg argument_type; 900171: 900171: 900171: typedef _Result result_type; 900171: } __attribute__ ((__deprecated__)); 900171: 900171: 900171: 900171: 900171: 900171: template 900171: struct binary_function 900171: { 900171: 900171: typedef _Arg1 first_argument_type; 900171: 900171: 900171: typedef _Arg2 second_argument_type; 900171: 900171: 900171: typedef _Result result_type; 900171: } __attribute__ ((__deprecated__)); 900171: # 179 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_function.h" 3 900171: #pragma GCC diagnostic push 900171: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 900171: 900171: 900171: template 900171: struct plus : public binary_function<_Tp, _Tp, _Tp> 900171: { 900171: 900171: 900171: _Tp 900171: operator()(const _Tp& __x, const _Tp& __y) const 900171: { return __x + __y; } 900171: }; 900171: 900171: 900171: template 900171: struct minus : public binary_function<_Tp, _Tp, _Tp> 900171: { 900171: 900171: _Tp 900171: operator()(const _Tp& __x, const _Tp& __y) const 900171: { return __x - __y; } 900171: }; 900171: 900171: 900171: template 900171: struct multiplies : public binary_function<_Tp, _Tp, _Tp> 900171: { 900171: 900171: _Tp 900171: operator()(const _Tp& __x, const _Tp& __y) const 900171: { return __x * __y; } 900171: }; 900171: 900171: 900171: template 900171: struct divides : public binary_function<_Tp, _Tp, _Tp> 900171: { 900171: 900171: _Tp 900171: operator()(const _Tp& __x, const _Tp& __y) const 900171: { return __x / __y; } 900171: }; 900171: 900171: 900171: template 900171: struct modulus : public binary_function<_Tp, _Tp, _Tp> 900171: { 900171: 900171: _Tp 900171: operator()(const _Tp& __x, const _Tp& __y) const 900171: { return __x % __y; } 900171: }; 900171: 900171: 900171: template 900171: struct negate : public unary_function<_Tp, _Tp> 900171: { 900171: 900171: _Tp 900171: operator()(const _Tp& __x) const 900171: { return -__x; } 900171: }; 900171: #pragma GCC diagnostic pop 900171: # 368 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_function.h" 3 900171: #pragma GCC diagnostic push 900171: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 900171: 900171: 900171: template 900171: struct equal_to : public binary_function<_Tp, _Tp, bool> 900171: { 900171: 900171: bool 900171: operator()(const _Tp& __x, const _Tp& __y) const 900171: { return __x == __y; } 900171: }; 900171: 900171: 900171: template 900171: struct not_equal_to : public binary_function<_Tp, _Tp, bool> 900171: { 900171: 900171: bool 900171: operator()(const _Tp& __x, const _Tp& __y) const 900171: { return __x != __y; } 900171: }; 900171: 900171: 900171: template 900171: struct greater : public binary_function<_Tp, _Tp, bool> 900171: { 900171: 900171: bool 900171: operator()(const _Tp& __x, const _Tp& __y) const 900171: { return __x > __y; } 900171: }; 900171: 900171: 900171: template 900171: struct less : public binary_function<_Tp, _Tp, bool> 900171: { 900171: 900171: bool 900171: operator()(const _Tp& __x, const _Tp& __y) const 900171: { return __x < __y; } 900171: }; 900171: 900171: 900171: template 900171: struct greater_equal : public binary_function<_Tp, _Tp, bool> 900171: { 900171: 900171: bool 900171: operator()(const _Tp& __x, const _Tp& __y) const 900171: { return __x >= __y; } 900171: }; 900171: 900171: 900171: template 900171: struct less_equal : public binary_function<_Tp, _Tp, bool> 900171: { 900171: 900171: bool 900171: operator()(const _Tp& __x, const _Tp& __y) const 900171: { return __x <= __y; } 900171: }; 900171: 900171: 900171: template 900171: struct greater<_Tp*> : public binary_function<_Tp*, _Tp*, bool> 900171: { 900171: bool 900171: operator()(_Tp* __x, _Tp* __y) const noexcept 900171: { 900171: 900171: 900171: 900171: 900171: return (long unsigned int)__x > (long unsigned int)__y; 900171: } 900171: }; 900171: 900171: 900171: template 900171: struct less<_Tp*> : public binary_function<_Tp*, _Tp*, bool> 900171: { 900171: bool 900171: operator()(_Tp* __x, _Tp* __y) const noexcept 900171: { 900171: 900171: 900171: 900171: 900171: return (long unsigned int)__x < (long unsigned int)__y; 900171: } 900171: }; 900171: 900171: 900171: template 900171: struct greater_equal<_Tp*> : public binary_function<_Tp*, _Tp*, bool> 900171: { 900171: bool 900171: operator()(_Tp* __x, _Tp* __y) const noexcept 900171: { 900171: 900171: 900171: 900171: 900171: return (long unsigned int)__x >= (long unsigned int)__y; 900171: } 900171: }; 900171: 900171: 900171: template 900171: struct less_equal<_Tp*> : public binary_function<_Tp*, _Tp*, bool> 900171: { 900171: bool 900171: operator()(_Tp* __x, _Tp* __y) const noexcept 900171: { 900171: 900171: 900171: 900171: 900171: return (long unsigned int)__x <= (long unsigned int)__y; 900171: } 900171: }; 900171: #pragma GCC diagnostic pop 900171: # 791 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_function.h" 3 900171: #pragma GCC diagnostic push 900171: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 900171: 900171: 900171: template 900171: struct logical_and : public binary_function<_Tp, _Tp, bool> 900171: { 900171: 900171: bool 900171: operator()(const _Tp& __x, const _Tp& __y) const 900171: { return __x && __y; } 900171: }; 900171: 900171: 900171: template 900171: struct logical_or : public binary_function<_Tp, _Tp, bool> 900171: { 900171: 900171: bool 900171: operator()(const _Tp& __x, const _Tp& __y) const 900171: { return __x || __y; } 900171: }; 900171: 900171: 900171: template 900171: struct logical_not : public unary_function<_Tp, bool> 900171: { 900171: 900171: bool 900171: operator()(const _Tp& __x) const 900171: { return !__x; } 900171: }; 900171: #pragma GCC diagnostic pop 900171: # 887 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_function.h" 3 900171: #pragma GCC diagnostic push 900171: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 900171: 900171: 900171: 900171: template 900171: struct bit_and : public binary_function<_Tp, _Tp, _Tp> 900171: { 900171: 900171: _Tp 900171: operator()(const _Tp& __x, const _Tp& __y) const 900171: { return __x & __y; } 900171: }; 900171: 900171: template 900171: struct bit_or : public binary_function<_Tp, _Tp, _Tp> 900171: { 900171: 900171: _Tp 900171: operator()(const _Tp& __x, const _Tp& __y) const 900171: { return __x | __y; } 900171: }; 900171: 900171: template 900171: struct bit_xor : public binary_function<_Tp, _Tp, _Tp> 900171: { 900171: 900171: _Tp 900171: operator()(const _Tp& __x, const _Tp& __y) const 900171: { return __x ^ __y; } 900171: }; 900171: 900171: template 900171: struct bit_not : public unary_function<_Tp, _Tp> 900171: { 900171: 900171: _Tp 900171: operator()(const _Tp& __x) const 900171: { return ~__x; } 900171: }; 900171: #pragma GCC diagnostic pop 900171: # 987 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_function.h" 3 900171: #pragma GCC diagnostic push 900171: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 900171: # 1023 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_function.h" 3 900171: template 900171: class unary_negate 900171: : public unary_function 900171: { 900171: protected: 900171: _Predicate _M_pred; 900171: 900171: public: 900171: 900171: explicit 900171: unary_negate(const _Predicate& __x) : _M_pred(__x) { } 900171: 900171: 900171: bool 900171: operator()(const typename _Predicate::argument_type& __x) const 900171: { return !_M_pred(__x); } 900171: }; 900171: 900171: 900171: template 900171: 900171: 900171: inline unary_negate<_Predicate> 900171: not1(const _Predicate& __pred) 900171: { return unary_negate<_Predicate>(__pred); } 900171: 900171: 900171: template 900171: class binary_negate 900171: : public binary_function 900171: { 900171: protected: 900171: _Predicate _M_pred; 900171: 900171: public: 900171: 900171: explicit 900171: binary_negate(const _Predicate& __x) : _M_pred(__x) { } 900171: 900171: 900171: bool 900171: operator()(const typename _Predicate::first_argument_type& __x, 900171: const typename _Predicate::second_argument_type& __y) const 900171: { return !_M_pred(__x, __y); } 900171: }; 900171: 900171: 900171: template 900171: 900171: 900171: inline binary_negate<_Predicate> 900171: not2(const _Predicate& __pred) 900171: { return binary_negate<_Predicate>(__pred); } 900171: # 1104 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_function.h" 3 900171: template 900171: class pointer_to_unary_function : public unary_function<_Arg, _Result> 900171: { 900171: protected: 900171: _Result (*_M_ptr)(_Arg); 900171: 900171: public: 900171: pointer_to_unary_function() { } 900171: 900171: explicit 900171: pointer_to_unary_function(_Result (*__x)(_Arg)) 900171: : _M_ptr(__x) { } 900171: 900171: _Result 900171: operator()(_Arg __x) const 900171: { return _M_ptr(__x); } 900171: } __attribute__ ((__deprecated__)); 900171: 900171: 900171: template 900171: __attribute__ ((__deprecated__ ("use '" "std::function" "' instead"))) 900171: inline pointer_to_unary_function<_Arg, _Result> 900171: ptr_fun(_Result (*__x)(_Arg)) 900171: { return pointer_to_unary_function<_Arg, _Result>(__x); } 900171: 900171: 900171: template 900171: class pointer_to_binary_function 900171: : public binary_function<_Arg1, _Arg2, _Result> 900171: { 900171: protected: 900171: _Result (*_M_ptr)(_Arg1, _Arg2); 900171: 900171: public: 900171: pointer_to_binary_function() { } 900171: 900171: explicit 900171: pointer_to_binary_function(_Result (*__x)(_Arg1, _Arg2)) 900171: : _M_ptr(__x) { } 900171: 900171: _Result 900171: operator()(_Arg1 __x, _Arg2 __y) const 900171: { return _M_ptr(__x, __y); } 900171: } __attribute__ ((__deprecated__)); 900171: 900171: 900171: template 900171: __attribute__ ((__deprecated__ ("use '" "std::function" "' instead"))) 900171: inline pointer_to_binary_function<_Arg1, _Arg2, _Result> 900171: ptr_fun(_Result (*__x)(_Arg1, _Arg2)) 900171: { return pointer_to_binary_function<_Arg1, _Arg2, _Result>(__x); } 900171: 900171: 900171: template 900171: struct _Identity 900171: : public unary_function<_Tp, _Tp> 900171: { 900171: _Tp& 900171: operator()(_Tp& __x) const 900171: { return __x; } 900171: 900171: const _Tp& 900171: operator()(const _Tp& __x) const 900171: { return __x; } 900171: }; 900171: 900171: 900171: template struct _Identity : _Identity<_Tp> { }; 900171: 900171: template 900171: struct _Select1st 900171: : public unary_function<_Pair, typename _Pair::first_type> 900171: { 900171: typename _Pair::first_type& 900171: operator()(_Pair& __x) const 900171: { return __x.first; } 900171: 900171: const typename _Pair::first_type& 900171: operator()(const _Pair& __x) const 900171: { return __x.first; } 900171: 900171: 900171: template 900171: typename _Pair2::first_type& 900171: operator()(_Pair2& __x) const 900171: { return __x.first; } 900171: 900171: template 900171: const typename _Pair2::first_type& 900171: operator()(const _Pair2& __x) const 900171: { return __x.first; } 900171: 900171: }; 900171: 900171: template 900171: struct _Select2nd 900171: : public unary_function<_Pair, typename _Pair::second_type> 900171: { 900171: typename _Pair::second_type& 900171: operator()(_Pair& __x) const 900171: { return __x.second; } 900171: 900171: const typename _Pair::second_type& 900171: operator()(const _Pair& __x) const 900171: { return __x.second; } 900171: }; 900171: # 1231 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_function.h" 3 900171: template 900171: class mem_fun_t : public unary_function<_Tp*, _Ret> 900171: { 900171: public: 900171: explicit 900171: mem_fun_t(_Ret (_Tp::*__pf)()) 900171: : _M_f(__pf) { } 900171: 900171: _Ret 900171: operator()(_Tp* __p) const 900171: { return (__p->*_M_f)(); } 900171: 900171: private: 900171: _Ret (_Tp::*_M_f)(); 900171: } __attribute__ ((__deprecated__)); 900171: 900171: 900171: template 900171: class const_mem_fun_t : public unary_function 900171: { 900171: public: 900171: explicit 900171: const_mem_fun_t(_Ret (_Tp::*__pf)() const) 900171: : _M_f(__pf) { } 900171: 900171: _Ret 900171: operator()(const _Tp* __p) const 900171: { return (__p->*_M_f)(); } 900171: 900171: private: 900171: _Ret (_Tp::*_M_f)() const; 900171: } __attribute__ ((__deprecated__)); 900171: 900171: 900171: template 900171: class mem_fun_ref_t : public unary_function<_Tp, _Ret> 900171: { 900171: public: 900171: explicit 900171: mem_fun_ref_t(_Ret (_Tp::*__pf)()) 900171: : _M_f(__pf) { } 900171: 900171: _Ret 900171: operator()(_Tp& __r) const 900171: { return (__r.*_M_f)(); } 900171: 900171: private: 900171: _Ret (_Tp::*_M_f)(); 900171: } __attribute__ ((__deprecated__)); 900171: 900171: 900171: template 900171: class const_mem_fun_ref_t : public unary_function<_Tp, _Ret> 900171: { 900171: public: 900171: explicit 900171: const_mem_fun_ref_t(_Ret (_Tp::*__pf)() const) 900171: : _M_f(__pf) { } 900171: 900171: _Ret 900171: operator()(const _Tp& __r) const 900171: { return (__r.*_M_f)(); } 900171: 900171: private: 900171: _Ret (_Tp::*_M_f)() const; 900171: } __attribute__ ((__deprecated__)); 900171: 900171: 900171: template 900171: class mem_fun1_t : public binary_function<_Tp*, _Arg, _Ret> 900171: { 900171: public: 900171: explicit 900171: mem_fun1_t(_Ret (_Tp::*__pf)(_Arg)) 900171: : _M_f(__pf) { } 900171: 900171: _Ret 900171: operator()(_Tp* __p, _Arg __x) const 900171: { return (__p->*_M_f)(__x); } 900171: 900171: private: 900171: _Ret (_Tp::*_M_f)(_Arg); 900171: } __attribute__ ((__deprecated__)); 900171: 900171: 900171: template 900171: class const_mem_fun1_t : public binary_function 900171: { 900171: public: 900171: explicit 900171: const_mem_fun1_t(_Ret (_Tp::*__pf)(_Arg) const) 900171: : _M_f(__pf) { } 900171: 900171: _Ret 900171: operator()(const _Tp* __p, _Arg __x) const 900171: { return (__p->*_M_f)(__x); } 900171: 900171: private: 900171: _Ret (_Tp::*_M_f)(_Arg) const; 900171: } __attribute__ ((__deprecated__)); 900171: 900171: 900171: template 900171: class mem_fun1_ref_t : public binary_function<_Tp, _Arg, _Ret> 900171: { 900171: public: 900171: explicit 900171: mem_fun1_ref_t(_Ret (_Tp::*__pf)(_Arg)) 900171: : _M_f(__pf) { } 900171: 900171: _Ret 900171: operator()(_Tp& __r, _Arg __x) const 900171: { return (__r.*_M_f)(__x); } 900171: 900171: private: 900171: _Ret (_Tp::*_M_f)(_Arg); 900171: } __attribute__ ((__deprecated__)); 900171: 900171: 900171: template 900171: class const_mem_fun1_ref_t : public binary_function<_Tp, _Arg, _Ret> 900171: { 900171: public: 900171: explicit 900171: const_mem_fun1_ref_t(_Ret (_Tp::*__pf)(_Arg) const) 900171: : _M_f(__pf) { } 900171: 900171: _Ret 900171: operator()(const _Tp& __r, _Arg __x) const 900171: { return (__r.*_M_f)(__x); } 900171: 900171: private: 900171: _Ret (_Tp::*_M_f)(_Arg) const; 900171: } __attribute__ ((__deprecated__)); 900171: 900171: 900171: 900171: template 900171: __attribute__ ((__deprecated__ ("use '" "std::mem_fn" "' instead"))) 900171: inline mem_fun_t<_Ret, _Tp> 900171: mem_fun(_Ret (_Tp::*__f)()) 900171: { return mem_fun_t<_Ret, _Tp>(__f); } 900171: 900171: template 900171: __attribute__ ((__deprecated__ ("use '" "std::mem_fn" "' instead"))) 900171: inline const_mem_fun_t<_Ret, _Tp> 900171: mem_fun(_Ret (_Tp::*__f)() const) 900171: { return const_mem_fun_t<_Ret, _Tp>(__f); } 900171: 900171: template 900171: __attribute__ ((__deprecated__ ("use '" "std::mem_fn" "' instead"))) 900171: inline mem_fun_ref_t<_Ret, _Tp> 900171: mem_fun_ref(_Ret (_Tp::*__f)()) 900171: { return mem_fun_ref_t<_Ret, _Tp>(__f); } 900171: 900171: template 900171: __attribute__ ((__deprecated__ ("use '" "std::mem_fn" "' instead"))) 900171: inline const_mem_fun_ref_t<_Ret, _Tp> 900171: mem_fun_ref(_Ret (_Tp::*__f)() const) 900171: { return const_mem_fun_ref_t<_Ret, _Tp>(__f); } 900171: 900171: template 900171: __attribute__ ((__deprecated__ ("use '" "std::mem_fn" "' instead"))) 900171: inline mem_fun1_t<_Ret, _Tp, _Arg> 900171: mem_fun(_Ret (_Tp::*__f)(_Arg)) 900171: { return mem_fun1_t<_Ret, _Tp, _Arg>(__f); } 900171: 900171: template 900171: __attribute__ ((__deprecated__ ("use '" "std::mem_fn" "' instead"))) 900171: inline const_mem_fun1_t<_Ret, _Tp, _Arg> 900171: mem_fun(_Ret (_Tp::*__f)(_Arg) const) 900171: { return const_mem_fun1_t<_Ret, _Tp, _Arg>(__f); } 900171: 900171: template 900171: __attribute__ ((__deprecated__ ("use '" "std::mem_fn" "' instead"))) 900171: inline mem_fun1_ref_t<_Ret, _Tp, _Arg> 900171: mem_fun_ref(_Ret (_Tp::*__f)(_Arg)) 900171: { return mem_fun1_ref_t<_Ret, _Tp, _Arg>(__f); } 900171: 900171: template 900171: __attribute__ ((__deprecated__ ("use '" "std::mem_fn" "' instead"))) 900171: inline const_mem_fun1_ref_t<_Ret, _Tp, _Arg> 900171: mem_fun_ref(_Ret (_Tp::*__f)(_Arg) const) 900171: { return const_mem_fun1_ref_t<_Ret, _Tp, _Arg>(__f); } 900171: #pragma GCC diagnostic pop 900171: # 1434 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_function.h" 3 900171: 900171: } 900171: 900171: 900171: # 1 "/usr/aarch64-linux-gnu/include/c++/12/backward/binders.h" 1 3 900171: # 60 "/usr/aarch64-linux-gnu/include/c++/12/backward/binders.h" 3 900171: #pragma GCC diagnostic push 900171: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 900171: 900171: namespace std __attribute__ ((__visibility__ ("default"))) 900171: { 900171: 900171: # 107 "/usr/aarch64-linux-gnu/include/c++/12/backward/binders.h" 3 900171: template 900171: class binder1st 900171: : public unary_function 900171: { 900171: protected: 900171: _Operation op; 900171: typename _Operation::first_argument_type value; 900171: 900171: public: 900171: binder1st(const _Operation& __x, 900171: const typename _Operation::first_argument_type& __y) 900171: : op(__x), value(__y) { } 900171: 900171: typename _Operation::result_type 900171: operator()(const typename _Operation::second_argument_type& __x) const 900171: { return op(value, __x); } 900171: 900171: 900171: 900171: typename _Operation::result_type 900171: operator()(typename _Operation::second_argument_type& __x) const 900171: { return op(value, __x); } 900171: } __attribute__ ((__deprecated__ ("use '" "std::bind" "' instead"))); 900171: 900171: 900171: template 900171: __attribute__ ((__deprecated__ ("use '" "std::bind" "' instead"))) 900171: inline binder1st<_Operation> 900171: bind1st(const _Operation& __fn, const _Tp& __x) 900171: { 900171: typedef typename _Operation::first_argument_type _Arg1_type; 900171: return binder1st<_Operation>(__fn, _Arg1_type(__x)); 900171: } 900171: 900171: 900171: template 900171: class binder2nd 900171: : public unary_function 900171: { 900171: protected: 900171: _Operation op; 900171: typename _Operation::second_argument_type value; 900171: 900171: public: 900171: binder2nd(const _Operation& __x, 900171: const typename _Operation::second_argument_type& __y) 900171: : op(__x), value(__y) { } 900171: 900171: typename _Operation::result_type 900171: operator()(const typename _Operation::first_argument_type& __x) const 900171: { return op(__x, value); } 900171: 900171: 900171: 900171: typename _Operation::result_type 900171: operator()(typename _Operation::first_argument_type& __x) const 900171: { return op(__x, value); } 900171: } __attribute__ ((__deprecated__ ("use '" "std::bind" "' instead"))); 900171: 900171: 900171: template 900171: __attribute__ ((__deprecated__ ("use '" "std::bind" "' instead"))) 900171: inline binder2nd<_Operation> 900171: bind2nd(const _Operation& __fn, const _Tp& __x) 900171: { 900171: typedef typename _Operation::second_argument_type _Arg2_type; 900171: return binder2nd<_Operation>(__fn, _Arg2_type(__x)); 900171: } 900171: 900171: 900171: 900171: } 900171: 900171: #pragma GCC diagnostic pop 900171: # 1439 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_function.h" 2 3 900171: # 38 "/usr/aarch64-linux-gnu/include/c++/12/bits/unique_ptr.h" 2 3 900171: # 1 "/usr/aarch64-linux-gnu/include/c++/12/bits/functional_hash.h" 1 3 900171: # 33 "/usr/aarch64-linux-gnu/include/c++/12/bits/functional_hash.h" 3 900171: 900171: # 34 "/usr/aarch64-linux-gnu/include/c++/12/bits/functional_hash.h" 3 900171: 900171: 900171: # 1 "/usr/aarch64-linux-gnu/include/c++/12/bits/hash_bytes.h" 1 3 900171: # 33 "/usr/aarch64-linux-gnu/include/c++/12/bits/hash_bytes.h" 3 900171: 900171: # 34 "/usr/aarch64-linux-gnu/include/c++/12/bits/hash_bytes.h" 3 900171: 900171: 900171: 900171: namespace std 900171: { 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: size_t 900171: _Hash_bytes(const void* __ptr, size_t __len, size_t __seed); 900171: 900171: 900171: 900171: 900171: 900171: size_t 900171: _Fnv_hash_bytes(const void* __ptr, size_t __len, size_t __seed); 900171: 900171: 900171: } 900171: # 37 "/usr/aarch64-linux-gnu/include/c++/12/bits/functional_hash.h" 2 3 900171: 900171: namespace std __attribute__ ((__visibility__ ("default"))) 900171: { 900171: 900171: # 50 "/usr/aarch64-linux-gnu/include/c++/12/bits/functional_hash.h" 3 900171: template 900171: struct __hash_base 900171: { 900171: typedef _Result result_type ; 900171: typedef _Arg argument_type ; 900171: }; 900171: 900171: 900171: template 900171: struct hash; 900171: 900171: template 900171: struct __poison_hash 900171: { 900171: static constexpr bool __enable_hash_call = false; 900171: private: 900171: 900171: __poison_hash(__poison_hash&&); 900171: ~__poison_hash(); 900171: }; 900171: 900171: template 900171: struct __poison_hash<_Tp, __void_t()(declval<_Tp>()))>> 900171: { 900171: static constexpr bool __enable_hash_call = true; 900171: }; 900171: 900171: 900171: template::value> 900171: struct __hash_enum 900171: { 900171: private: 900171: 900171: __hash_enum(__hash_enum&&); 900171: ~__hash_enum(); 900171: }; 900171: 900171: 900171: template 900171: struct __hash_enum<_Tp, true> : public __hash_base 900171: { 900171: size_t 900171: operator()(_Tp __val) const noexcept 900171: { 900171: using __type = typename underlying_type<_Tp>::type; 900171: return hash<__type>{}(static_cast<__type>(__val)); 900171: } 900171: }; 900171: 900171: 900171: 900171: template 900171: struct hash : __hash_enum<_Tp> 900171: { }; 900171: 900171: 900171: template 900171: struct hash<_Tp*> : public __hash_base 900171: { 900171: size_t 900171: operator()(_Tp* __p) const noexcept 900171: { return reinterpret_cast(__p); } 900171: }; 900171: # 125 "/usr/aarch64-linux-gnu/include/c++/12/bits/functional_hash.h" 3 900171: template<> struct hash : public __hash_base { size_t operator()(bool __val) const noexcept { return static_cast(__val); } }; 900171: 900171: 900171: template<> struct hash : public __hash_base { size_t operator()(char __val) const noexcept { return static_cast(__val); } }; 900171: 900171: 900171: template<> struct hash : public __hash_base { size_t operator()(signed char __val) const noexcept { return static_cast(__val); } }; 900171: 900171: 900171: template<> struct hash : public __hash_base { size_t operator()(unsigned char __val) const noexcept { return static_cast(__val); } }; 900171: 900171: 900171: template<> struct hash : public __hash_base { size_t operator()(wchar_t __val) const noexcept { return static_cast(__val); } }; 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: template<> struct hash : public __hash_base { size_t operator()(char16_t __val) const noexcept { return static_cast(__val); } }; 900171: 900171: 900171: template<> struct hash : public __hash_base { size_t operator()(char32_t __val) const noexcept { return static_cast(__val); } }; 900171: 900171: 900171: template<> struct hash : public __hash_base { size_t operator()(short __val) const noexcept { return static_cast(__val); } }; 900171: 900171: 900171: template<> struct hash : public __hash_base { size_t operator()(int __val) const noexcept { return static_cast(__val); } }; 900171: 900171: 900171: template<> struct hash : public __hash_base { size_t operator()(long __val) const noexcept { return static_cast(__val); } }; 900171: 900171: 900171: template<> struct hash : public __hash_base { size_t operator()(long long __val) const noexcept { return static_cast(__val); } }; 900171: 900171: 900171: template<> struct hash : public __hash_base { size_t operator()(unsigned short __val) const noexcept { return static_cast(__val); } }; 900171: 900171: 900171: template<> struct hash : public __hash_base { size_t operator()(unsigned int __val) const noexcept { return static_cast(__val); } }; 900171: 900171: 900171: template<> struct hash : public __hash_base { size_t operator()(unsigned long __val) const noexcept { return static_cast(__val); } }; 900171: 900171: 900171: template<> struct hash : public __hash_base { size_t operator()(unsigned long long __val) const noexcept { return static_cast(__val); } }; 900171: # 201 "/usr/aarch64-linux-gnu/include/c++/12/bits/functional_hash.h" 3 900171: struct _Hash_impl 900171: { 900171: static size_t 900171: hash(const void* __ptr, size_t __clength, 900171: size_t __seed = static_cast(0xc70f6907UL)) 900171: { return _Hash_bytes(__ptr, __clength, __seed); } 900171: 900171: template 900171: static size_t 900171: hash(const _Tp& __val) 900171: { return hash(&__val, sizeof(__val)); } 900171: 900171: template 900171: static size_t 900171: __hash_combine(const _Tp& __val, size_t __hash) 900171: { return hash(&__val, sizeof(__val), __hash); } 900171: }; 900171: 900171: 900171: struct _Fnv_hash_impl 900171: { 900171: static size_t 900171: hash(const void* __ptr, size_t __clength, 900171: size_t __seed = static_cast(2166136261UL)) 900171: { return _Fnv_hash_bytes(__ptr, __clength, __seed); } 900171: 900171: template 900171: static size_t 900171: hash(const _Tp& __val) 900171: { return hash(&__val, sizeof(__val)); } 900171: 900171: template 900171: static size_t 900171: __hash_combine(const _Tp& __val, size_t __hash) 900171: { return hash(&__val, sizeof(__val), __hash); } 900171: }; 900171: 900171: 900171: template<> 900171: struct hash : public __hash_base 900171: { 900171: size_t 900171: operator()(float __val) const noexcept 900171: { 900171: 900171: return __val != 0.0f ? std::_Hash_impl::hash(__val) : 0; 900171: } 900171: }; 900171: 900171: 900171: template<> 900171: struct hash : public __hash_base 900171: { 900171: size_t 900171: operator()(double __val) const noexcept 900171: { 900171: 900171: return __val != 0.0 ? std::_Hash_impl::hash(__val) : 0; 900171: } 900171: }; 900171: 900171: 900171: template<> 900171: struct hash 900171: : public __hash_base 900171: { 900171: __attribute__ ((__pure__)) size_t 900171: operator()(long double __val) const noexcept; 900171: }; 900171: # 287 "/usr/aarch64-linux-gnu/include/c++/12/bits/functional_hash.h" 3 900171: template 900171: struct __is_fast_hash : public std::true_type 900171: { }; 900171: 900171: template<> 900171: struct __is_fast_hash> : public std::false_type 900171: { }; 900171: 900171: 900171: } 900171: # 39 "/usr/aarch64-linux-gnu/include/c++/12/bits/unique_ptr.h" 2 3 900171: # 52 "/usr/aarch64-linux-gnu/include/c++/12/bits/unique_ptr.h" 3 900171: namespace std __attribute__ ((__visibility__ ("default"))) 900171: { 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: #pragma GCC diagnostic push 900171: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 900171: template class auto_ptr; 900171: #pragma GCC diagnostic pop 900171: 900171: 900171: 900171: 900171: template 900171: struct default_delete 900171: { 900171: 900171: constexpr default_delete() noexcept = default; 900171: 900171: 900171: 900171: 900171: 900171: 900171: template>> 900171: 900171: default_delete(const default_delete<_Up>&) noexcept { } 900171: 900171: 900171: 900171: void 900171: operator()(_Tp* __ptr) const 900171: { 900171: static_assert(!is_void<_Tp>::value, 900171: "can't delete pointer to incomplete type"); 900171: static_assert(sizeof(_Tp)>0, 900171: "can't delete pointer to incomplete type"); 900171: delete __ptr; 900171: } 900171: }; 900171: 900171: 900171: 900171: 900171: 900171: template 900171: struct default_delete<_Tp[]> 900171: { 900171: public: 900171: 900171: constexpr default_delete() noexcept = default; 900171: # 119 "/usr/aarch64-linux-gnu/include/c++/12/bits/unique_ptr.h" 3 900171: template>> 900171: 900171: default_delete(const default_delete<_Up[]>&) noexcept { } 900171: 900171: 900171: template 900171: 900171: typename enable_if::value>::type 900171: operator()(_Up* __ptr) const 900171: { 900171: static_assert(sizeof(_Tp)>0, 900171: "can't delete pointer to incomplete type"); 900171: delete [] __ptr; 900171: } 900171: }; 900171: 900171: 900171: 900171: 900171: template 900171: class __uniq_ptr_impl 900171: { 900171: template 900171: struct _Ptr 900171: { 900171: using type = _Up*; 900171: }; 900171: 900171: template 900171: struct 900171: _Ptr<_Up, _Ep, __void_t::type::pointer>> 900171: { 900171: using type = typename remove_reference<_Ep>::type::pointer; 900171: }; 900171: 900171: public: 900171: using _DeleterConstraint = enable_if< 900171: __and_<__not_>, 900171: is_default_constructible<_Dp>>::value>; 900171: 900171: using pointer = typename _Ptr<_Tp, _Dp>::type; 900171: 900171: static_assert( !is_rvalue_reference<_Dp>::value, 900171: "unique_ptr's deleter type must be a function object type" 900171: " or an lvalue reference type" ); 900171: 900171: __uniq_ptr_impl() = default; 900171: 900171: __uniq_ptr_impl(pointer __p) : _M_t() { _M_ptr() = __p; } 900171: 900171: template 900171: 900171: __uniq_ptr_impl(pointer __p, _Del&& __d) 900171: : _M_t(__p, std::forward<_Del>(__d)) { } 900171: 900171: 900171: __uniq_ptr_impl(__uniq_ptr_impl&& __u) noexcept 900171: : _M_t(std::move(__u._M_t)) 900171: { __u._M_ptr() = nullptr; } 900171: 900171: 900171: __uniq_ptr_impl& operator=(__uniq_ptr_impl&& __u) noexcept 900171: { 900171: reset(__u.release()); 900171: _M_deleter() = std::forward<_Dp>(__u._M_deleter()); 900171: return *this; 900171: } 900171: 900171: 900171: pointer& _M_ptr() noexcept { return std::get<0>(_M_t); } 900171: 900171: pointer _M_ptr() const noexcept { return std::get<0>(_M_t); } 900171: 900171: _Dp& _M_deleter() noexcept { return std::get<1>(_M_t); } 900171: 900171: const _Dp& _M_deleter() const noexcept { return std::get<1>(_M_t); } 900171: 900171: 900171: void reset(pointer __p) noexcept 900171: { 900171: const pointer __old_p = _M_ptr(); 900171: _M_ptr() = __p; 900171: if (__old_p) 900171: _M_deleter()(__old_p); 900171: } 900171: 900171: 900171: pointer release() noexcept 900171: { 900171: pointer __p = _M_ptr(); 900171: _M_ptr() = nullptr; 900171: return __p; 900171: } 900171: 900171: 900171: void 900171: swap(__uniq_ptr_impl& __rhs) noexcept 900171: { 900171: using std::swap; 900171: swap(this->_M_ptr(), __rhs._M_ptr()); 900171: swap(this->_M_deleter(), __rhs._M_deleter()); 900171: } 900171: 900171: private: 900171: tuple _M_t; 900171: }; 900171: 900171: 900171: template ::value, 900171: bool = is_move_assignable<_Dp>::value> 900171: struct __uniq_ptr_data : __uniq_ptr_impl<_Tp, _Dp> 900171: { 900171: using __uniq_ptr_impl<_Tp, _Dp>::__uniq_ptr_impl; 900171: __uniq_ptr_data(__uniq_ptr_data&&) = default; 900171: __uniq_ptr_data& operator=(__uniq_ptr_data&&) = default; 900171: }; 900171: 900171: template 900171: struct __uniq_ptr_data<_Tp, _Dp, true, false> : __uniq_ptr_impl<_Tp, _Dp> 900171: { 900171: using __uniq_ptr_impl<_Tp, _Dp>::__uniq_ptr_impl; 900171: __uniq_ptr_data(__uniq_ptr_data&&) = default; 900171: __uniq_ptr_data& operator=(__uniq_ptr_data&&) = delete; 900171: }; 900171: 900171: template 900171: struct __uniq_ptr_data<_Tp, _Dp, false, true> : __uniq_ptr_impl<_Tp, _Dp> 900171: { 900171: using __uniq_ptr_impl<_Tp, _Dp>::__uniq_ptr_impl; 900171: __uniq_ptr_data(__uniq_ptr_data&&) = delete; 900171: __uniq_ptr_data& operator=(__uniq_ptr_data&&) = default; 900171: }; 900171: 900171: template 900171: struct __uniq_ptr_data<_Tp, _Dp, false, false> : __uniq_ptr_impl<_Tp, _Dp> 900171: { 900171: using __uniq_ptr_impl<_Tp, _Dp>::__uniq_ptr_impl; 900171: __uniq_ptr_data(__uniq_ptr_data&&) = delete; 900171: __uniq_ptr_data& operator=(__uniq_ptr_data&&) = delete; 900171: }; 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: template > 900171: class unique_ptr 900171: { 900171: template 900171: using _DeleterConstraint = 900171: typename __uniq_ptr_impl<_Tp, _Up>::_DeleterConstraint::type; 900171: 900171: __uniq_ptr_data<_Tp, _Dp> _M_t; 900171: 900171: public: 900171: using pointer = typename __uniq_ptr_impl<_Tp, _Dp>::pointer; 900171: using element_type = _Tp; 900171: using deleter_type = _Dp; 900171: 900171: private: 900171: 900171: 900171: template 900171: using __safe_conversion_up = __and_< 900171: is_convertible::pointer, pointer>, 900171: __not_> 900171: >; 900171: 900171: public: 900171: 900171: 900171: 900171: template> 900171: constexpr unique_ptr() noexcept 900171: : _M_t() 900171: { } 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: template> 900171: 900171: explicit 900171: unique_ptr(pointer __p) noexcept 900171: : _M_t(__p) 900171: { } 900171: # 320 "/usr/aarch64-linux-gnu/include/c++/12/bits/unique_ptr.h" 3 900171: template>> 900171: 900171: unique_ptr(pointer __p, const deleter_type& __d) noexcept 900171: : _M_t(__p, __d) { } 900171: # 333 "/usr/aarch64-linux-gnu/include/c++/12/bits/unique_ptr.h" 3 900171: template>> 900171: 900171: unique_ptr(pointer __p, 900171: __enable_if_t::value, 900171: _Del&&> __d) noexcept 900171: : _M_t(__p, std::move(__d)) 900171: { } 900171: 900171: template::type> 900171: 900171: unique_ptr(pointer, 900171: __enable_if_t::value, 900171: _DelUnref&&>) = delete; 900171: 900171: 900171: template> 900171: constexpr unique_ptr(nullptr_t) noexcept 900171: : _M_t() 900171: { } 900171: 900171: 900171: 900171: 900171: unique_ptr(unique_ptr&&) = default; 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: template, 900171: __conditional_t::value, 900171: is_same<_Ep, _Dp>, 900171: is_convertible<_Ep, _Dp>>>> 900171: 900171: unique_ptr(unique_ptr<_Up, _Ep>&& __u) noexcept 900171: : _M_t(__u.release(), std::forward<_Ep>(__u.get_deleter())) 900171: { } 900171: 900171: 900171: #pragma GCC diagnostic push 900171: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 900171: 900171: template, is_same<_Dp, default_delete<_Tp>>>> 900171: unique_ptr(auto_ptr<_Up>&& __u) noexcept; 900171: #pragma GCC diagnostic pop 900171: 900171: 900171: 900171: 900171: 900171: 900171: ~unique_ptr() noexcept 900171: { 900171: static_assert(__is_invocable::value, 900171: "unique_ptr's deleter must be invocable with a pointer"); 900171: auto& __ptr = _M_t._M_ptr(); 900171: if (__ptr != nullptr) 900171: get_deleter()(std::move(__ptr)); 900171: __ptr = pointer(); 900171: } 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: unique_ptr& operator=(unique_ptr&&) = default; 900171: # 415 "/usr/aarch64-linux-gnu/include/c++/12/bits/unique_ptr.h" 3 900171: template 900171: 900171: typename enable_if< __and_< 900171: __safe_conversion_up<_Up, _Ep>, 900171: is_assignable 900171: >::value, 900171: unique_ptr&>::type 900171: operator=(unique_ptr<_Up, _Ep>&& __u) noexcept 900171: { 900171: reset(__u.release()); 900171: get_deleter() = std::forward<_Ep>(__u.get_deleter()); 900171: return *this; 900171: } 900171: 900171: 900171: 900171: unique_ptr& 900171: operator=(nullptr_t) noexcept 900171: { 900171: reset(); 900171: return *this; 900171: } 900171: 900171: 900171: 900171: 900171: 900171: typename add_lvalue_reference::type 900171: operator*() const noexcept(noexcept(*std::declval())) 900171: { 900171: do { if (std::__is_constant_evaluated() && !bool(get() != pointer())) __builtin_unreachable(); } while (false); 900171: return *get(); 900171: } 900171: 900171: 900171: 900171: pointer 900171: operator->() const noexcept 900171: { 900171: ; 900171: return get(); 900171: } 900171: 900171: 900171: 900171: pointer 900171: get() const noexcept 900171: { return _M_t._M_ptr(); } 900171: 900171: 900171: 900171: deleter_type& 900171: get_deleter() noexcept 900171: { return _M_t._M_deleter(); } 900171: 900171: 900171: 900171: const deleter_type& 900171: get_deleter() const noexcept 900171: { return _M_t._M_deleter(); } 900171: 900171: 900171: 900171: explicit operator bool() const noexcept 900171: { return get() == pointer() ? false : true; } 900171: 900171: 900171: 900171: 900171: 900171: pointer 900171: release() noexcept 900171: { return _M_t.release(); } 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: void 900171: reset(pointer __p = pointer()) noexcept 900171: { 900171: static_assert(__is_invocable::value, 900171: "unique_ptr's deleter must be invocable with a pointer"); 900171: _M_t.reset(std::move(__p)); 900171: } 900171: 900171: 900171: 900171: void 900171: swap(unique_ptr& __u) noexcept 900171: { 900171: static_assert(__is_swappable<_Dp>::value, "deleter must be swappable"); 900171: _M_t.swap(__u._M_t); 900171: } 900171: 900171: 900171: unique_ptr(const unique_ptr&) = delete; 900171: unique_ptr& operator=(const unique_ptr&) = delete; 900171: }; 900171: # 526 "/usr/aarch64-linux-gnu/include/c++/12/bits/unique_ptr.h" 3 900171: template 900171: class unique_ptr<_Tp[], _Dp> 900171: { 900171: template 900171: using _DeleterConstraint = 900171: typename __uniq_ptr_impl<_Tp, _Up>::_DeleterConstraint::type; 900171: 900171: __uniq_ptr_data<_Tp, _Dp> _M_t; 900171: 900171: template 900171: using __remove_cv = typename remove_cv<_Up>::type; 900171: 900171: 900171: template 900171: using __is_derived_Tp 900171: = __and_< is_base_of<_Tp, _Up>, 900171: __not_, __remove_cv<_Up>>> >; 900171: 900171: public: 900171: using pointer = typename __uniq_ptr_impl<_Tp, _Dp>::pointer; 900171: using element_type = _Tp; 900171: using deleter_type = _Dp; 900171: 900171: 900171: 900171: template, 900171: typename _UP_pointer = typename _UPtr::pointer, 900171: typename _UP_element_type = typename _UPtr::element_type> 900171: using __safe_conversion_up = __and_< 900171: is_array<_Up>, 900171: is_same, 900171: is_same<_UP_pointer, _UP_element_type*>, 900171: is_convertible<_UP_element_type(*)[], element_type(*)[]> 900171: >; 900171: 900171: 900171: template 900171: using __safe_conversion_raw = __and_< 900171: __or_<__or_, 900171: is_same<_Up, nullptr_t>>, 900171: __and_, 900171: is_same, 900171: is_convertible< 900171: typename remove_pointer<_Up>::type(*)[], 900171: element_type(*)[]> 900171: > 900171: > 900171: >; 900171: 900171: 900171: 900171: 900171: template> 900171: constexpr unique_ptr() noexcept 900171: : _M_t() 900171: { } 900171: # 591 "/usr/aarch64-linux-gnu/include/c++/12/bits/unique_ptr.h" 3 900171: template, 900171: typename = typename enable_if< 900171: __safe_conversion_raw<_Up>::value, bool>::type> 900171: 900171: explicit 900171: unique_ptr(_Up __p) noexcept 900171: : _M_t(__p) 900171: { } 900171: # 610 "/usr/aarch64-linux-gnu/include/c++/12/bits/unique_ptr.h" 3 900171: template, 900171: is_copy_constructible<_Del>>> 900171: 900171: unique_ptr(_Up __p, const deleter_type& __d) noexcept 900171: : _M_t(__p, __d) { } 900171: # 625 "/usr/aarch64-linux-gnu/include/c++/12/bits/unique_ptr.h" 3 900171: template, 900171: is_move_constructible<_Del>>> 900171: 900171: unique_ptr(_Up __p, 900171: __enable_if_t::value, 900171: _Del&&> __d) noexcept 900171: : _M_t(std::move(__p), std::move(__d)) 900171: { } 900171: 900171: template::type, 900171: typename = _Require<__safe_conversion_raw<_Up>>> 900171: unique_ptr(_Up, 900171: __enable_if_t::value, 900171: _DelUnref&&>) = delete; 900171: 900171: 900171: unique_ptr(unique_ptr&&) = default; 900171: 900171: 900171: template> 900171: constexpr unique_ptr(nullptr_t) noexcept 900171: : _M_t() 900171: { } 900171: 900171: template, 900171: __conditional_t::value, 900171: is_same<_Ep, _Dp>, 900171: is_convertible<_Ep, _Dp>>>> 900171: 900171: unique_ptr(unique_ptr<_Up, _Ep>&& __u) noexcept 900171: : _M_t(__u.release(), std::forward<_Ep>(__u.get_deleter())) 900171: { } 900171: 900171: 900171: 900171: 900171: 900171: ~unique_ptr() 900171: { 900171: auto& __ptr = _M_t._M_ptr(); 900171: if (__ptr != nullptr) 900171: get_deleter()(__ptr); 900171: __ptr = pointer(); 900171: } 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: unique_ptr& 900171: operator=(unique_ptr&&) = default; 900171: # 689 "/usr/aarch64-linux-gnu/include/c++/12/bits/unique_ptr.h" 3 900171: template 900171: 900171: typename 900171: enable_if<__and_<__safe_conversion_up<_Up, _Ep>, 900171: is_assignable 900171: >::value, 900171: unique_ptr&>::type 900171: operator=(unique_ptr<_Up, _Ep>&& __u) noexcept 900171: { 900171: reset(__u.release()); 900171: get_deleter() = std::forward<_Ep>(__u.get_deleter()); 900171: return *this; 900171: } 900171: 900171: 900171: 900171: unique_ptr& 900171: operator=(nullptr_t) noexcept 900171: { 900171: reset(); 900171: return *this; 900171: } 900171: 900171: 900171: 900171: 900171: 900171: typename std::add_lvalue_reference::type 900171: operator[](size_t __i) const 900171: { 900171: do { if (std::__is_constant_evaluated() && !bool(get() != pointer())) __builtin_unreachable(); } while (false); 900171: return get()[__i]; 900171: } 900171: 900171: 900171: 900171: pointer 900171: get() const noexcept 900171: { return _M_t._M_ptr(); } 900171: 900171: 900171: 900171: deleter_type& 900171: get_deleter() noexcept 900171: { return _M_t._M_deleter(); } 900171: 900171: 900171: 900171: const deleter_type& 900171: get_deleter() const noexcept 900171: { return _M_t._M_deleter(); } 900171: 900171: 900171: 900171: explicit operator bool() const noexcept 900171: { return get() == pointer() ? false : true; } 900171: 900171: 900171: 900171: 900171: 900171: pointer 900171: release() noexcept 900171: { return _M_t.release(); } 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: template , 900171: __and_, 900171: is_pointer<_Up>, 900171: is_convertible< 900171: typename remove_pointer<_Up>::type(*)[], 900171: element_type(*)[] 900171: > 900171: > 900171: > 900171: >> 900171: 900171: void 900171: reset(_Up __p) noexcept 900171: { _M_t.reset(std::move(__p)); } 900171: 900171: 900171: void reset(nullptr_t = nullptr) noexcept 900171: { reset(pointer()); } 900171: 900171: 900171: 900171: void 900171: swap(unique_ptr& __u) noexcept 900171: { 900171: static_assert(__is_swappable<_Dp>::value, "deleter must be swappable"); 900171: _M_t.swap(__u._M_t); 900171: } 900171: 900171: 900171: unique_ptr(const unique_ptr&) = delete; 900171: unique_ptr& operator=(const unique_ptr&) = delete; 900171: }; 900171: 900171: 900171: 900171: 900171: 900171: template 900171: inline 900171: 900171: 900171: 900171: 900171: 900171: void 900171: 900171: swap(unique_ptr<_Tp, _Dp>& __x, 900171: unique_ptr<_Tp, _Dp>& __y) noexcept 900171: { __x.swap(__y); } 900171: # 820 "/usr/aarch64-linux-gnu/include/c++/12/bits/unique_ptr.h" 3 900171: template 900171: 900171: inline bool 900171: operator==(const unique_ptr<_Tp, _Dp>& __x, 900171: const unique_ptr<_Up, _Ep>& __y) 900171: { return __x.get() == __y.get(); } 900171: 900171: 900171: template 900171: 900171: inline bool 900171: operator==(const unique_ptr<_Tp, _Dp>& __x, nullptr_t) noexcept 900171: { return !__x; } 900171: 900171: 900171: 900171: template 900171: 900171: inline bool 900171: operator==(nullptr_t, const unique_ptr<_Tp, _Dp>& __x) noexcept 900171: { return !__x; } 900171: 900171: 900171: template 900171: 900171: inline bool 900171: operator!=(const unique_ptr<_Tp, _Dp>& __x, 900171: const unique_ptr<_Up, _Ep>& __y) 900171: { return __x.get() != __y.get(); } 900171: 900171: 900171: template 900171: 900171: inline bool 900171: operator!=(const unique_ptr<_Tp, _Dp>& __x, nullptr_t) noexcept 900171: { return (bool)__x; } 900171: 900171: 900171: template 900171: 900171: inline bool 900171: operator!=(nullptr_t, const unique_ptr<_Tp, _Dp>& __x) noexcept 900171: { return (bool)__x; } 900171: 900171: 900171: 900171: template 900171: 900171: inline bool 900171: operator<(const unique_ptr<_Tp, _Dp>& __x, 900171: const unique_ptr<_Up, _Ep>& __y) 900171: { 900171: typedef typename 900171: std::common_type::pointer, 900171: typename unique_ptr<_Up, _Ep>::pointer>::type _CT; 900171: return std::less<_CT>()(__x.get(), __y.get()); 900171: } 900171: 900171: 900171: template 900171: 900171: inline bool 900171: operator<(const unique_ptr<_Tp, _Dp>& __x, nullptr_t) 900171: { 900171: return std::less::pointer>()(__x.get(), 900171: nullptr); 900171: } 900171: 900171: 900171: template 900171: 900171: inline bool 900171: operator<(nullptr_t, const unique_ptr<_Tp, _Dp>& __x) 900171: { 900171: return std::less::pointer>()(nullptr, 900171: __x.get()); 900171: } 900171: 900171: 900171: template 900171: 900171: inline bool 900171: operator<=(const unique_ptr<_Tp, _Dp>& __x, 900171: const unique_ptr<_Up, _Ep>& __y) 900171: { return !(__y < __x); } 900171: 900171: 900171: template 900171: 900171: inline bool 900171: operator<=(const unique_ptr<_Tp, _Dp>& __x, nullptr_t) 900171: { return !(nullptr < __x); } 900171: 900171: 900171: template 900171: 900171: inline bool 900171: operator<=(nullptr_t, const unique_ptr<_Tp, _Dp>& __x) 900171: { return !(__x < nullptr); } 900171: 900171: 900171: template 900171: 900171: inline bool 900171: operator>(const unique_ptr<_Tp, _Dp>& __x, 900171: const unique_ptr<_Up, _Ep>& __y) 900171: { return (__y < __x); } 900171: 900171: 900171: template 900171: 900171: inline bool 900171: operator>(const unique_ptr<_Tp, _Dp>& __x, nullptr_t) 900171: { 900171: return std::less::pointer>()(nullptr, 900171: __x.get()); 900171: } 900171: 900171: 900171: template 900171: 900171: inline bool 900171: operator>(nullptr_t, const unique_ptr<_Tp, _Dp>& __x) 900171: { 900171: return std::less::pointer>()(__x.get(), 900171: nullptr); 900171: } 900171: 900171: 900171: template 900171: 900171: inline bool 900171: operator>=(const unique_ptr<_Tp, _Dp>& __x, 900171: const unique_ptr<_Up, _Ep>& __y) 900171: { return !(__x < __y); } 900171: 900171: 900171: template 900171: 900171: inline bool 900171: operator>=(const unique_ptr<_Tp, _Dp>& __x, nullptr_t) 900171: { return !(__x < nullptr); } 900171: 900171: 900171: template 900171: inline bool 900171: operator>=(nullptr_t, const unique_ptr<_Tp, _Dp>& __x) 900171: { return !(nullptr < __x); } 900171: # 1001 "/usr/aarch64-linux-gnu/include/c++/12/bits/unique_ptr.h" 3 900171: template::__enable_hash_call> 900171: struct __uniq_ptr_hash 900171: 900171: : private __poison_hash<_Ptr> 900171: 900171: { 900171: size_t 900171: operator()(const _Up& __u) const 900171: noexcept(noexcept(std::declval>()(std::declval<_Ptr>()))) 900171: { return hash<_Ptr>()(__u.get()); } 900171: }; 900171: 900171: template 900171: struct __uniq_ptr_hash<_Up, _Ptr, false> 900171: : private __poison_hash<_Ptr> 900171: { }; 900171: 900171: 900171: 900171: template 900171: struct hash> 900171: : public __hash_base>, 900171: public __uniq_ptr_hash> 900171: { }; 900171: # 1162 "/usr/aarch64-linux-gnu/include/c++/12/bits/unique_ptr.h" 3 900171: 900171: } 900171: # 77 "/usr/aarch64-linux-gnu/include/c++/12/memory" 2 3 900171: # 1 "/usr/aarch64-linux-gnu/include/c++/12/bits/shared_ptr.h" 1 3 900171: # 52 "/usr/aarch64-linux-gnu/include/c++/12/bits/shared_ptr.h" 3 900171: # 1 "/usr/aarch64-linux-gnu/include/c++/12/iosfwd" 1 3 900171: # 36 "/usr/aarch64-linux-gnu/include/c++/12/iosfwd" 3 900171: 900171: # 37 "/usr/aarch64-linux-gnu/include/c++/12/iosfwd" 3 900171: 900171: 900171: # 1 "/usr/aarch64-linux-gnu/include/c++/12/bits/stringfwd.h" 1 3 900171: # 37 "/usr/aarch64-linux-gnu/include/c++/12/bits/stringfwd.h" 3 900171: 900171: # 38 "/usr/aarch64-linux-gnu/include/c++/12/bits/stringfwd.h" 3 900171: 900171: 900171: 900171: 900171: namespace std __attribute__ ((__visibility__ ("default"))) 900171: { 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: template 900171: struct char_traits; 900171: 900171: template<> struct char_traits; 900171: 900171: template<> struct char_traits; 900171: 900171: 900171: 900171: 900171: 900171: 900171: template<> struct char_traits; 900171: template<> struct char_traits; 900171: 900171: 900171: namespace __cxx11 { 900171: 900171: template, 900171: typename _Alloc = allocator<_CharT> > 900171: class basic_string; 900171: 900171: } 900171: 900171: 900171: typedef basic_string string; 900171: 900171: 900171: typedef basic_string wstring; 900171: # 89 "/usr/aarch64-linux-gnu/include/c++/12/bits/stringfwd.h" 3 900171: typedef basic_string u16string; 900171: 900171: 900171: typedef basic_string u32string; 900171: 900171: 900171: 900171: 900171: 900171: } 900171: # 40 "/usr/aarch64-linux-gnu/include/c++/12/iosfwd" 2 3 900171: # 1 "/usr/aarch64-linux-gnu/include/c++/12/bits/postypes.h" 1 3 900171: # 38 "/usr/aarch64-linux-gnu/include/c++/12/bits/postypes.h" 3 900171: 900171: # 39 "/usr/aarch64-linux-gnu/include/c++/12/bits/postypes.h" 3 900171: 900171: # 1 "/usr/aarch64-linux-gnu/include/c++/12/cwchar" 1 3 900171: # 39 "/usr/aarch64-linux-gnu/include/c++/12/cwchar" 3 900171: 900171: # 40 "/usr/aarch64-linux-gnu/include/c++/12/cwchar" 3 900171: 900171: 900171: 900171: 900171: # 1 "/usr/aarch64-linux-gnu/include/wchar.h" 1 3 900171: # 27 "/usr/aarch64-linux-gnu/include/wchar.h" 3 900171: # 1 "/usr/aarch64-linux-gnu/include/bits/libc-header-start.h" 1 3 900171: # 28 "/usr/aarch64-linux-gnu/include/wchar.h" 2 3 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: # 1 "/usr/lib/gcc-cross/aarch64-linux-gnu/12/include/stddef.h" 1 3 4 900171: # 36 "/usr/aarch64-linux-gnu/include/wchar.h" 2 3 900171: 900171: 900171: # 1 "/usr/lib/gcc-cross/aarch64-linux-gnu/12/include/stdarg.h" 1 3 4 900171: # 39 "/usr/aarch64-linux-gnu/include/wchar.h" 2 3 900171: 900171: 900171: # 1 "/usr/aarch64-linux-gnu/include/bits/types/wint_t.h" 1 3 900171: # 20 "/usr/aarch64-linux-gnu/include/bits/types/wint_t.h" 3 900171: typedef unsigned int wint_t; 900171: # 42 "/usr/aarch64-linux-gnu/include/wchar.h" 2 3 900171: # 1 "/usr/aarch64-linux-gnu/include/bits/types/mbstate_t.h" 1 3 900171: 900171: 900171: 900171: 900171: 900171: typedef __mbstate_t mbstate_t; 900171: # 43 "/usr/aarch64-linux-gnu/include/wchar.h" 2 3 900171: # 79 "/usr/aarch64-linux-gnu/include/wchar.h" 3 900171: extern "C" { 900171: 900171: 900171: 900171: struct tm; 900171: 900171: 900171: 900171: extern wchar_t *wcscpy (wchar_t *__restrict __dest, 900171: const wchar_t *__restrict __src) 900171: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 900171: 900171: 900171: extern wchar_t *wcsncpy (wchar_t *__restrict __dest, 900171: const wchar_t *__restrict __src, size_t __n) 900171: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 900171: 900171: 900171: extern wchar_t *wcscat (wchar_t *__restrict __dest, 900171: const wchar_t *__restrict __src) 900171: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 900171: 900171: extern wchar_t *wcsncat (wchar_t *__restrict __dest, 900171: const wchar_t *__restrict __src, size_t __n) 900171: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 900171: 900171: 900171: extern int wcscmp (const wchar_t *__s1, const wchar_t *__s2) 900171: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 900171: 900171: extern int wcsncmp (const wchar_t *__s1, const wchar_t *__s2, size_t __n) 900171: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 900171: 900171: 900171: 900171: extern int wcscasecmp (const wchar_t *__s1, const wchar_t *__s2) noexcept (true); 900171: 900171: 900171: extern int wcsncasecmp (const wchar_t *__s1, const wchar_t *__s2, 900171: size_t __n) noexcept (true); 900171: 900171: 900171: 900171: extern int wcscasecmp_l (const wchar_t *__s1, const wchar_t *__s2, 900171: locale_t __loc) noexcept (true); 900171: 900171: extern int wcsncasecmp_l (const wchar_t *__s1, const wchar_t *__s2, 900171: size_t __n, locale_t __loc) noexcept (true); 900171: 900171: 900171: 900171: 900171: extern int wcscoll (const wchar_t *__s1, const wchar_t *__s2) noexcept (true); 900171: 900171: 900171: 900171: extern size_t wcsxfrm (wchar_t *__restrict __s1, 900171: const wchar_t *__restrict __s2, size_t __n) noexcept (true); 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern int wcscoll_l (const wchar_t *__s1, const wchar_t *__s2, 900171: locale_t __loc) noexcept (true); 900171: 900171: 900171: 900171: 900171: extern size_t wcsxfrm_l (wchar_t *__s1, const wchar_t *__s2, 900171: size_t __n, locale_t __loc) noexcept (true); 900171: 900171: 900171: extern wchar_t *wcsdup (const wchar_t *__s) noexcept (true) 900171: __attribute__ ((__malloc__)) __attribute__ ((__malloc__ (__builtin_free, 1))); 900171: 900171: 900171: 900171: 900171: extern "C++" wchar_t *wcschr (wchar_t *__wcs, wchar_t __wc) 900171: noexcept (true) __asm ("wcschr") __attribute__ ((__pure__)); 900171: extern "C++" const wchar_t *wcschr (const wchar_t *__wcs, wchar_t __wc) 900171: noexcept (true) __asm ("wcschr") __attribute__ ((__pure__)); 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern "C++" wchar_t *wcsrchr (wchar_t *__wcs, wchar_t __wc) 900171: noexcept (true) __asm ("wcsrchr") __attribute__ ((__pure__)); 900171: extern "C++" const wchar_t *wcsrchr (const wchar_t *__wcs, wchar_t __wc) 900171: noexcept (true) __asm ("wcsrchr") __attribute__ ((__pure__)); 900171: # 182 "/usr/aarch64-linux-gnu/include/wchar.h" 3 900171: extern wchar_t *wcschrnul (const wchar_t *__s, wchar_t __wc) 900171: noexcept (true) __attribute__ ((__pure__)); 900171: 900171: 900171: 900171: 900171: extern size_t wcscspn (const wchar_t *__wcs, const wchar_t *__reject) 900171: noexcept (true) __attribute__ ((__pure__)); 900171: 900171: 900171: extern size_t wcsspn (const wchar_t *__wcs, const wchar_t *__accept) 900171: noexcept (true) __attribute__ ((__pure__)); 900171: 900171: 900171: extern "C++" wchar_t *wcspbrk (wchar_t *__wcs, const wchar_t *__accept) 900171: noexcept (true) __asm ("wcspbrk") __attribute__ ((__pure__)); 900171: extern "C++" const wchar_t *wcspbrk (const wchar_t *__wcs, 900171: const wchar_t *__accept) 900171: noexcept (true) __asm ("wcspbrk") __attribute__ ((__pure__)); 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern "C++" wchar_t *wcsstr (wchar_t *__haystack, const wchar_t *__needle) 900171: noexcept (true) __asm ("wcsstr") __attribute__ ((__pure__)); 900171: extern "C++" const wchar_t *wcsstr (const wchar_t *__haystack, 900171: const wchar_t *__needle) 900171: noexcept (true) __asm ("wcsstr") __attribute__ ((__pure__)); 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern wchar_t *wcstok (wchar_t *__restrict __s, 900171: const wchar_t *__restrict __delim, 900171: wchar_t **__restrict __ptr) noexcept (true); 900171: 900171: 900171: extern size_t wcslen (const wchar_t *__s) noexcept (true) __attribute__ ((__pure__)); 900171: 900171: 900171: 900171: 900171: extern "C++" wchar_t *wcswcs (wchar_t *__haystack, const wchar_t *__needle) 900171: noexcept (true) __asm ("wcswcs") __attribute__ ((__pure__)); 900171: extern "C++" const wchar_t *wcswcs (const wchar_t *__haystack, 900171: const wchar_t *__needle) 900171: noexcept (true) __asm ("wcswcs") __attribute__ ((__pure__)); 900171: # 241 "/usr/aarch64-linux-gnu/include/wchar.h" 3 900171: extern size_t wcsnlen (const wchar_t *__s, size_t __maxlen) 900171: noexcept (true) __attribute__ ((__pure__)); 900171: 900171: 900171: 900171: 900171: 900171: extern "C++" wchar_t *wmemchr (wchar_t *__s, wchar_t __c, size_t __n) 900171: noexcept (true) __asm ("wmemchr") __attribute__ ((__pure__)); 900171: extern "C++" const wchar_t *wmemchr (const wchar_t *__s, wchar_t __c, 900171: size_t __n) 900171: noexcept (true) __asm ("wmemchr") __attribute__ ((__pure__)); 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern int wmemcmp (const wchar_t *__s1, const wchar_t *__s2, size_t __n) 900171: noexcept (true) __attribute__ ((__pure__)); 900171: 900171: 900171: extern wchar_t *wmemcpy (wchar_t *__restrict __s1, 900171: const wchar_t *__restrict __s2, size_t __n) noexcept (true); 900171: 900171: 900171: 900171: extern wchar_t *wmemmove (wchar_t *__s1, const wchar_t *__s2, size_t __n) 900171: noexcept (true); 900171: 900171: 900171: extern wchar_t *wmemset (wchar_t *__s, wchar_t __c, size_t __n) noexcept (true); 900171: 900171: 900171: 900171: 900171: extern wchar_t *wmempcpy (wchar_t *__restrict __s1, 900171: const wchar_t *__restrict __s2, size_t __n) 900171: noexcept (true); 900171: 900171: 900171: 900171: 900171: 900171: extern wint_t btowc (int __c) noexcept (true); 900171: 900171: 900171: 900171: extern int wctob (wint_t __c) noexcept (true); 900171: 900171: 900171: 900171: extern int mbsinit (const mbstate_t *__ps) noexcept (true) __attribute__ ((__pure__)); 900171: 900171: 900171: 900171: extern size_t mbrtowc (wchar_t *__restrict __pwc, 900171: const char *__restrict __s, size_t __n, 900171: mbstate_t *__restrict __p) noexcept (true); 900171: 900171: 900171: extern size_t wcrtomb (char *__restrict __s, wchar_t __wc, 900171: mbstate_t *__restrict __ps) noexcept (true); 900171: 900171: 900171: extern size_t __mbrlen (const char *__restrict __s, size_t __n, 900171: mbstate_t *__restrict __ps) noexcept (true); 900171: extern size_t mbrlen (const char *__restrict __s, size_t __n, 900171: mbstate_t *__restrict __ps) noexcept (true); 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern wint_t __btowc_alias (int __c) __asm ("btowc"); 900171: extern __inline __attribute__ ((__gnu_inline__)) wint_t 900171: __attribute__ ((__leaf__)) btowc (int __c) noexcept (true) 900171: { return (__builtin_constant_p (__c) && __c >= '\0' && __c <= '\x7f' 900171: ? (wint_t) __c : __btowc_alias (__c)); } 900171: 900171: extern int __wctob_alias (wint_t __c) __asm ("wctob"); 900171: extern __inline __attribute__ ((__gnu_inline__)) int 900171: __attribute__ ((__leaf__)) wctob (wint_t __wc) noexcept (true) 900171: { return (__builtin_constant_p (__wc) && __wc >= L'\0' && __wc <= L'\x7f' 900171: ? (int) __wc : __wctob_alias (__wc)); } 900171: 900171: extern __inline __attribute__ ((__gnu_inline__)) size_t 900171: __attribute__ ((__leaf__)) mbrlen (const char *__restrict __s, size_t __n, mbstate_t *__restrict __ps) noexcept (true) 900171: 900171: { return (__ps != __null 900171: ? mbrtowc (__null, __s, __n, __ps) : __mbrlen (__s, __n, __null)); } 900171: 900171: 900171: 900171: 900171: extern size_t mbsrtowcs (wchar_t *__restrict __dst, 900171: const char **__restrict __src, size_t __len, 900171: mbstate_t *__restrict __ps) noexcept (true); 900171: 900171: 900171: 900171: extern size_t wcsrtombs (char *__restrict __dst, 900171: const wchar_t **__restrict __src, size_t __len, 900171: mbstate_t *__restrict __ps) noexcept (true); 900171: 900171: 900171: 900171: 900171: 900171: extern size_t mbsnrtowcs (wchar_t *__restrict __dst, 900171: const char **__restrict __src, size_t __nmc, 900171: size_t __len, mbstate_t *__restrict __ps) noexcept (true); 900171: 900171: 900171: 900171: extern size_t wcsnrtombs (char *__restrict __dst, 900171: const wchar_t **__restrict __src, 900171: size_t __nwc, size_t __len, 900171: mbstate_t *__restrict __ps) noexcept (true); 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern int wcwidth (wchar_t __c) noexcept (true); 900171: 900171: 900171: 900171: extern int wcswidth (const wchar_t *__s, size_t __n) noexcept (true); 900171: 900171: 900171: 900171: 900171: 900171: extern double wcstod (const wchar_t *__restrict __nptr, 900171: wchar_t **__restrict __endptr) noexcept (true); 900171: 900171: 900171: 900171: extern float wcstof (const wchar_t *__restrict __nptr, 900171: wchar_t **__restrict __endptr) noexcept (true); 900171: extern long double wcstold (const wchar_t *__restrict __nptr, 900171: wchar_t **__restrict __endptr) noexcept (true); 900171: # 397 "/usr/aarch64-linux-gnu/include/wchar.h" 3 900171: extern _Float32 wcstof32 (const wchar_t *__restrict __nptr, 900171: wchar_t **__restrict __endptr) noexcept (true); 900171: 900171: 900171: 900171: extern _Float64 wcstof64 (const wchar_t *__restrict __nptr, 900171: wchar_t **__restrict __endptr) noexcept (true); 900171: 900171: 900171: 900171: extern _Float128 wcstof128 (const wchar_t *__restrict __nptr, 900171: wchar_t **__restrict __endptr) noexcept (true); 900171: 900171: 900171: 900171: extern _Float32x wcstof32x (const wchar_t *__restrict __nptr, 900171: wchar_t **__restrict __endptr) noexcept (true); 900171: 900171: 900171: 900171: extern _Float64x wcstof64x (const wchar_t *__restrict __nptr, 900171: wchar_t **__restrict __endptr) noexcept (true); 900171: # 429 "/usr/aarch64-linux-gnu/include/wchar.h" 3 900171: extern long int wcstol (const wchar_t *__restrict __nptr, 900171: wchar_t **__restrict __endptr, int __base) noexcept (true); 900171: 900171: 900171: 900171: extern unsigned long int wcstoul (const wchar_t *__restrict __nptr, 900171: wchar_t **__restrict __endptr, int __base) 900171: noexcept (true); 900171: 900171: 900171: 900171: 900171: __extension__ 900171: extern long long int wcstoll (const wchar_t *__restrict __nptr, 900171: wchar_t **__restrict __endptr, int __base) 900171: noexcept (true); 900171: 900171: 900171: 900171: __extension__ 900171: extern unsigned long long int wcstoull (const wchar_t *__restrict __nptr, 900171: wchar_t **__restrict __endptr, 900171: int __base) noexcept (true); 900171: 900171: 900171: 900171: 900171: 900171: __extension__ 900171: extern long long int wcstoq (const wchar_t *__restrict __nptr, 900171: wchar_t **__restrict __endptr, int __base) 900171: noexcept (true); 900171: 900171: 900171: 900171: __extension__ 900171: extern unsigned long long int wcstouq (const wchar_t *__restrict __nptr, 900171: wchar_t **__restrict __endptr, 900171: int __base) noexcept (true); 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern long int wcstol_l (const wchar_t *__restrict __nptr, 900171: wchar_t **__restrict __endptr, int __base, 900171: locale_t __loc) noexcept (true); 900171: 900171: extern unsigned long int wcstoul_l (const wchar_t *__restrict __nptr, 900171: wchar_t **__restrict __endptr, 900171: int __base, locale_t __loc) noexcept (true); 900171: 900171: __extension__ 900171: extern long long int wcstoll_l (const wchar_t *__restrict __nptr, 900171: wchar_t **__restrict __endptr, 900171: int __base, locale_t __loc) noexcept (true); 900171: 900171: __extension__ 900171: extern unsigned long long int wcstoull_l (const wchar_t *__restrict __nptr, 900171: wchar_t **__restrict __endptr, 900171: int __base, locale_t __loc) 900171: noexcept (true); 900171: 900171: extern double wcstod_l (const wchar_t *__restrict __nptr, 900171: wchar_t **__restrict __endptr, locale_t __loc) 900171: noexcept (true); 900171: 900171: extern float wcstof_l (const wchar_t *__restrict __nptr, 900171: wchar_t **__restrict __endptr, locale_t __loc) 900171: noexcept (true); 900171: 900171: extern long double wcstold_l (const wchar_t *__restrict __nptr, 900171: wchar_t **__restrict __endptr, 900171: locale_t __loc) noexcept (true); 900171: # 512 "/usr/aarch64-linux-gnu/include/wchar.h" 3 900171: extern _Float32 wcstof32_l (const wchar_t *__restrict __nptr, 900171: wchar_t **__restrict __endptr, 900171: locale_t __loc) noexcept (true); 900171: 900171: 900171: 900171: extern _Float64 wcstof64_l (const wchar_t *__restrict __nptr, 900171: wchar_t **__restrict __endptr, 900171: locale_t __loc) noexcept (true); 900171: 900171: 900171: 900171: extern _Float128 wcstof128_l (const wchar_t *__restrict __nptr, 900171: wchar_t **__restrict __endptr, 900171: locale_t __loc) noexcept (true); 900171: 900171: 900171: 900171: extern _Float32x wcstof32x_l (const wchar_t *__restrict __nptr, 900171: wchar_t **__restrict __endptr, 900171: locale_t __loc) noexcept (true); 900171: 900171: 900171: 900171: extern _Float64x wcstof64x_l (const wchar_t *__restrict __nptr, 900171: wchar_t **__restrict __endptr, 900171: locale_t __loc) noexcept (true); 900171: # 552 "/usr/aarch64-linux-gnu/include/wchar.h" 3 900171: extern wchar_t *wcpcpy (wchar_t *__restrict __dest, 900171: const wchar_t *__restrict __src) noexcept (true); 900171: 900171: 900171: 900171: extern wchar_t *wcpncpy (wchar_t *__restrict __dest, 900171: const wchar_t *__restrict __src, size_t __n) 900171: noexcept (true); 900171: # 581 "/usr/aarch64-linux-gnu/include/wchar.h" 3 900171: extern __FILE *open_wmemstream (wchar_t **__bufloc, size_t *__sizeloc) noexcept (true) 900171: __attribute__ ((__malloc__)) __attribute__ ((__malloc__ (fclose, 1))); 900171: 900171: 900171: 900171: 900171: 900171: extern int fwide (__FILE *__fp, int __mode) noexcept (true); 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern int fwprintf (__FILE *__restrict __stream, 900171: const wchar_t *__restrict __format, ...) 900171: ; 900171: 900171: 900171: 900171: 900171: extern int wprintf (const wchar_t *__restrict __format, ...) 900171: ; 900171: 900171: extern int swprintf (wchar_t *__restrict __s, size_t __n, 900171: const wchar_t *__restrict __format, ...) 900171: noexcept (true) ; 900171: 900171: 900171: 900171: 900171: 900171: extern int vfwprintf (__FILE *__restrict __s, 900171: const wchar_t *__restrict __format, 900171: __gnuc_va_list __arg) 900171: ; 900171: 900171: 900171: 900171: 900171: extern int vwprintf (const wchar_t *__restrict __format, 900171: __gnuc_va_list __arg) 900171: ; 900171: 900171: 900171: extern int vswprintf (wchar_t *__restrict __s, size_t __n, 900171: const wchar_t *__restrict __format, 900171: __gnuc_va_list __arg) 900171: noexcept (true) ; 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern int fwscanf (__FILE *__restrict __stream, 900171: const wchar_t *__restrict __format, ...) 900171: ; 900171: 900171: 900171: 900171: 900171: extern int wscanf (const wchar_t *__restrict __format, ...) 900171: ; 900171: 900171: extern int swscanf (const wchar_t *__restrict __s, 900171: const wchar_t *__restrict __format, ...) 900171: noexcept (true) ; 900171: # 657 "/usr/aarch64-linux-gnu/include/wchar.h" 3 900171: extern int fwscanf (__FILE *__restrict __stream, const wchar_t *__restrict __format, ...) __asm__ ("" "__isoc99_fwscanf") 900171: 900171: 900171: ; 900171: extern int wscanf (const wchar_t *__restrict __format, ...) __asm__ ("" "__isoc99_wscanf") 900171: 900171: ; 900171: extern int swscanf (const wchar_t *__restrict __s, const wchar_t *__restrict __format, ...) noexcept (true) __asm__ ("" "__isoc99_swscanf") 900171: 900171: 900171: ; 900171: # 688 "/usr/aarch64-linux-gnu/include/wchar.h" 3 900171: extern int vfwscanf (__FILE *__restrict __s, 900171: const wchar_t *__restrict __format, 900171: __gnuc_va_list __arg) 900171: ; 900171: 900171: 900171: 900171: 900171: extern int vwscanf (const wchar_t *__restrict __format, 900171: __gnuc_va_list __arg) 900171: ; 900171: 900171: extern int vswscanf (const wchar_t *__restrict __s, 900171: const wchar_t *__restrict __format, 900171: __gnuc_va_list __arg) 900171: noexcept (true) ; 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern int vfwscanf (__FILE *__restrict __s, const wchar_t *__restrict __format, __gnuc_va_list __arg) __asm__ ("" "__isoc99_vfwscanf") 900171: 900171: 900171: ; 900171: extern int vwscanf (const wchar_t *__restrict __format, __gnuc_va_list __arg) __asm__ ("" "__isoc99_vwscanf") 900171: 900171: ; 900171: extern int vswscanf (const wchar_t *__restrict __s, const wchar_t *__restrict __format, __gnuc_va_list __arg) noexcept (true) __asm__ ("" "__isoc99_vswscanf") 900171: 900171: 900171: ; 900171: # 744 "/usr/aarch64-linux-gnu/include/wchar.h" 3 900171: extern wint_t fgetwc (__FILE *__stream); 900171: extern wint_t getwc (__FILE *__stream); 900171: 900171: 900171: 900171: 900171: 900171: extern wint_t getwchar (void); 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern wint_t fputwc (wchar_t __wc, __FILE *__stream); 900171: extern wint_t putwc (wchar_t __wc, __FILE *__stream); 900171: 900171: 900171: 900171: 900171: 900171: extern wint_t putwchar (wchar_t __wc); 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern wchar_t *fgetws (wchar_t *__restrict __ws, int __n, 900171: __FILE *__restrict __stream); 900171: 900171: 900171: 900171: 900171: 900171: extern int fputws (const wchar_t *__restrict __ws, 900171: __FILE *__restrict __stream); 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern wint_t ungetwc (wint_t __wc, __FILE *__stream); 900171: # 799 "/usr/aarch64-linux-gnu/include/wchar.h" 3 900171: extern wint_t getwc_unlocked (__FILE *__stream); 900171: extern wint_t getwchar_unlocked (void); 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern wint_t fgetwc_unlocked (__FILE *__stream); 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern wint_t fputwc_unlocked (wchar_t __wc, __FILE *__stream); 900171: # 825 "/usr/aarch64-linux-gnu/include/wchar.h" 3 900171: extern wint_t putwc_unlocked (wchar_t __wc, __FILE *__stream); 900171: extern wint_t putwchar_unlocked (wchar_t __wc); 900171: # 835 "/usr/aarch64-linux-gnu/include/wchar.h" 3 900171: extern wchar_t *fgetws_unlocked (wchar_t *__restrict __ws, int __n, 900171: __FILE *__restrict __stream); 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern int fputws_unlocked (const wchar_t *__restrict __ws, 900171: __FILE *__restrict __stream); 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern size_t wcsftime (wchar_t *__restrict __s, size_t __maxsize, 900171: const wchar_t *__restrict __format, 900171: const struct tm *__restrict __tp) noexcept (true); 900171: 900171: 900171: 900171: 900171: extern size_t wcsftime_l (wchar_t *__restrict __s, size_t __maxsize, 900171: const wchar_t *__restrict __format, 900171: const struct tm *__restrict __tp, 900171: locale_t __loc) noexcept (true); 900171: 900171: 900171: 900171: 900171: 900171: # 1 "/usr/aarch64-linux-gnu/include/bits/wchar2-decl.h" 1 3 900171: # 27 "/usr/aarch64-linux-gnu/include/bits/wchar2-decl.h" 3 900171: extern wchar_t *__wmemcpy_chk (wchar_t *__restrict __s1, 900171: const wchar_t *__restrict __s2, size_t __n, 900171: size_t __ns1) noexcept (true); 900171: extern wchar_t *__wmemmove_chk (wchar_t *__s1, const wchar_t *__s2, 900171: size_t __n, size_t __ns1) noexcept (true); 900171: 900171: 900171: 900171: 900171: extern wchar_t *__wmempcpy_chk (wchar_t *__restrict __s1, 900171: const wchar_t *__restrict __s2, size_t __n, 900171: size_t __ns1) noexcept (true); 900171: 900171: 900171: 900171: 900171: extern wchar_t *__wmemset_chk (wchar_t *__s, wchar_t __c, size_t __n, 900171: size_t __ns) noexcept (true); 900171: extern wchar_t *__wcscpy_chk (wchar_t *__restrict __dest, 900171: const wchar_t *__restrict __src, 900171: size_t __n) noexcept (true); 900171: extern wchar_t *__wcpcpy_chk (wchar_t *__restrict __dest, 900171: const wchar_t *__restrict __src, 900171: size_t __destlen) noexcept (true); 900171: extern wchar_t *__wcsncpy_chk (wchar_t *__restrict __dest, 900171: const wchar_t *__restrict __src, size_t __n, 900171: size_t __destlen) noexcept (true); 900171: extern wchar_t *__wcpncpy_chk (wchar_t *__restrict __dest, 900171: const wchar_t *__restrict __src, size_t __n, 900171: size_t __destlen) noexcept (true); 900171: extern wchar_t *__wcscat_chk (wchar_t *__restrict __dest, 900171: const wchar_t *__restrict __src, 900171: size_t __destlen) noexcept (true); 900171: extern wchar_t *__wcsncat_chk (wchar_t *__restrict __dest, 900171: const wchar_t *__restrict __src, 900171: size_t __n, size_t __destlen) noexcept (true); 900171: extern int __swprintf_chk (wchar_t *__restrict __s, size_t __n, 900171: int __flag, size_t __s_len, 900171: const wchar_t *__restrict __format, ...) 900171: noexcept (true) ; 900171: extern int __vswprintf_chk (wchar_t *__restrict __s, size_t __n, 900171: int __flag, size_t __s_len, 900171: const wchar_t *__restrict __format, 900171: __gnuc_va_list __arg) 900171: noexcept (true) ; 900171: 900171: 900171: 900171: extern int __fwprintf_chk (__FILE *__restrict __stream, int __flag, 900171: const wchar_t *__restrict __format, ...); 900171: extern int __wprintf_chk (int __flag, const wchar_t *__restrict __format, 900171: ...); 900171: extern int __vfwprintf_chk (__FILE *__restrict __stream, int __flag, 900171: const wchar_t *__restrict __format, 900171: __gnuc_va_list __ap); 900171: extern int __vwprintf_chk (int __flag, const wchar_t *__restrict __format, 900171: __gnuc_va_list __ap); 900171: 900171: 900171: 900171: extern wchar_t *__fgetws_chk (wchar_t *__restrict __s, size_t __size, int __n, 900171: __FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)); 900171: 900171: 900171: 900171: extern wchar_t *__fgetws_unlocked_chk (wchar_t *__restrict __s, size_t __size, 900171: int __n, __FILE *__restrict __stream) 900171: __attribute__ ((__warn_unused_result__)); 900171: 900171: 900171: 900171: extern size_t __wcrtomb_chk (char *__restrict __s, wchar_t __wchar, 900171: mbstate_t *__restrict __p, 900171: size_t __buflen) noexcept (true) __attribute__ ((__warn_unused_result__)); 900171: extern size_t __mbsrtowcs_chk (wchar_t *__restrict __dst, 900171: const char **__restrict __src, 900171: size_t __len, mbstate_t *__restrict __ps, 900171: size_t __dstlen) noexcept (true); 900171: extern size_t __wcsrtombs_chk (char *__restrict __dst, 900171: const wchar_t **__restrict __src, 900171: size_t __len, mbstate_t *__restrict __ps, 900171: size_t __dstlen) noexcept (true); 900171: 900171: 900171: 900171: extern size_t __mbsnrtowcs_chk (wchar_t *__restrict __dst, 900171: const char **__restrict __src, size_t __nmc, 900171: size_t __len, mbstate_t *__restrict __ps, 900171: size_t __dstlen) noexcept (true); 900171: extern size_t __wcsnrtombs_chk (char *__restrict __dst, 900171: const wchar_t **__restrict __src, 900171: size_t __nwc, size_t __len, 900171: mbstate_t *__restrict __ps, size_t __dstlen) 900171: noexcept (true); 900171: # 869 "/usr/aarch64-linux-gnu/include/wchar.h" 2 3 900171: # 879 "/usr/aarch64-linux-gnu/include/wchar.h" 3 900171: # 1 "/usr/aarch64-linux-gnu/include/bits/wchar2.h" 1 3 900171: # 24 "/usr/aarch64-linux-gnu/include/bits/wchar2.h" 3 900171: extern wchar_t *__wmemcpy_alias (wchar_t *__restrict __s1, const wchar_t *__restrict __s2, size_t __n) noexcept (true) __asm__ ("" "wmemcpy") 900171: 900171: 900171: ; 900171: extern wchar_t *__wmemcpy_chk_warn (wchar_t *__restrict __s1, const wchar_t *__restrict __s2, size_t __n, size_t __ns1) noexcept (true) __asm__ ("" "__wmemcpy_chk") 900171: 900171: 900171: 900171: __attribute__((__warning__ ("wmemcpy called with length bigger than size of destination " "buffer"))) 900171: ; 900171: 900171: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * 900171: __attribute__ ((__leaf__)) wmemcpy (wchar_t *__restrict __s1, const wchar_t *__restrict __s2, size_t __n) noexcept (true) 900171: 900171: { 900171: return (((__builtin_constant_p (__builtin_object_size (__s1, 0)) && (__builtin_object_size (__s1, 0)) == (long unsigned int) -1) || (((__typeof (__n)) 0 < (__typeof (__n)) -1 || (__builtin_constant_p (__n) && (__n) > 0)) && __builtin_constant_p ((((long unsigned int) (__n)) <= ((__builtin_object_size (__s1, 0))) / ((sizeof (wchar_t))))) && (((long unsigned int) (__n)) <= ((__builtin_object_size (__s1, 0))) / ((sizeof (wchar_t)))))) ? __wmemcpy_alias (__s1, __s2, __n) : ((((__typeof (__n)) 0 < (__typeof (__n)) -1 || (__builtin_constant_p (__n) && (__n) > 0)) && __builtin_constant_p ((((long unsigned int) (__n)) <= (__builtin_object_size (__s1, 0)) / (sizeof (wchar_t)))) && !(((long unsigned int) (__n)) <= (__builtin_object_size (__s1, 0)) / (sizeof (wchar_t)))) ? __wmemcpy_chk_warn (__s1, __s2, __n, (__builtin_object_size (__s1, 0)) / (sizeof (wchar_t))) : __wmemcpy_chk (__s1, __s2, __n, (__builtin_object_size (__s1, 0)) / (sizeof (wchar_t))))) 900171: 900171: ; 900171: } 900171: 900171: 900171: extern wchar_t *__wmemmove_alias (wchar_t *__s1, const wchar_t *__s2, size_t __n) noexcept (true) __asm__ ("" "wmemmove") 900171: 900171: ; 900171: extern wchar_t *__wmemmove_chk_warn (wchar_t *__s1, const wchar_t *__s2, size_t __n, size_t __ns1) noexcept (true) __asm__ ("" "__wmemmove_chk") 900171: 900171: 900171: __attribute__((__warning__ ("wmemmove called with length bigger than size of destination " "buffer"))) 900171: ; 900171: 900171: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * 900171: __attribute__ ((__leaf__)) wmemmove (wchar_t *__s1, const wchar_t *__s2, size_t __n) noexcept (true) 900171: { 900171: return (((__builtin_constant_p (__builtin_object_size (__s1, 0)) && (__builtin_object_size (__s1, 0)) == (long unsigned int) -1) || (((__typeof (__n)) 0 < (__typeof (__n)) -1 || (__builtin_constant_p (__n) && (__n) > 0)) && __builtin_constant_p ((((long unsigned int) (__n)) <= ((__builtin_object_size (__s1, 0))) / ((sizeof (wchar_t))))) && (((long unsigned int) (__n)) <= ((__builtin_object_size (__s1, 0))) / ((sizeof (wchar_t)))))) ? __wmemmove_alias (__s1, __s2, __n) : ((((__typeof (__n)) 0 < (__typeof (__n)) -1 || (__builtin_constant_p (__n) && (__n) > 0)) && __builtin_constant_p ((((long unsigned int) (__n)) <= (__builtin_object_size (__s1, 0)) / (sizeof (wchar_t)))) && !(((long unsigned int) (__n)) <= (__builtin_object_size (__s1, 0)) / (sizeof (wchar_t)))) ? __wmemmove_chk_warn (__s1, __s2, __n, (__builtin_object_size (__s1, 0)) / (sizeof (wchar_t))) : __wmemmove_chk (__s1, __s2, __n, (__builtin_object_size (__s1, 0)) / (sizeof (wchar_t))))) 900171: 900171: ; 900171: } 900171: 900171: 900171: 900171: extern wchar_t *__wmempcpy_alias (wchar_t *__restrict __s1, const wchar_t *__restrict __s2, size_t __n) noexcept (true) __asm__ ("" "wmempcpy") 900171: 900171: 900171: ; 900171: extern wchar_t *__wmempcpy_chk_warn (wchar_t *__restrict __s1, const wchar_t *__restrict __s2, size_t __n, size_t __ns1) noexcept (true) __asm__ ("" "__wmempcpy_chk") 900171: 900171: 900171: 900171: __attribute__((__warning__ ("wmempcpy called with length bigger than size of destination " "buffer"))) 900171: ; 900171: 900171: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * 900171: __attribute__ ((__leaf__)) wmempcpy (wchar_t *__restrict __s1, const wchar_t *__restrict __s2, size_t __n) noexcept (true) 900171: 900171: { 900171: return (((__builtin_constant_p (__builtin_object_size (__s1, 0)) && (__builtin_object_size (__s1, 0)) == (long unsigned int) -1) || (((__typeof (__n)) 0 < (__typeof (__n)) -1 || (__builtin_constant_p (__n) && (__n) > 0)) && __builtin_constant_p ((((long unsigned int) (__n)) <= ((__builtin_object_size (__s1, 0))) / ((sizeof (wchar_t))))) && (((long unsigned int) (__n)) <= ((__builtin_object_size (__s1, 0))) / ((sizeof (wchar_t)))))) ? __wmempcpy_alias (__s1, __s2, __n) : ((((__typeof (__n)) 0 < (__typeof (__n)) -1 || (__builtin_constant_p (__n) && (__n) > 0)) && __builtin_constant_p ((((long unsigned int) (__n)) <= (__builtin_object_size (__s1, 0)) / (sizeof (wchar_t)))) && !(((long unsigned int) (__n)) <= (__builtin_object_size (__s1, 0)) / (sizeof (wchar_t)))) ? __wmempcpy_chk_warn (__s1, __s2, __n, (__builtin_object_size (__s1, 0)) / (sizeof (wchar_t))) : __wmempcpy_chk (__s1, __s2, __n, (__builtin_object_size (__s1, 0)) / (sizeof (wchar_t))))) 900171: 900171: ; 900171: } 900171: 900171: 900171: 900171: extern wchar_t *__wmemset_alias (wchar_t *__s, wchar_t __c, size_t __n) noexcept (true) __asm__ ("" "wmemset") 900171: ; 900171: extern wchar_t *__wmemset_chk_warn (wchar_t *__s, wchar_t __c, size_t __n, size_t __ns) noexcept (true) __asm__ ("" "__wmemset_chk") 900171: 900171: 900171: __attribute__((__warning__ ("wmemset called with length bigger than size of destination " "buffer"))) 900171: ; 900171: 900171: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * 900171: __attribute__ ((__leaf__)) wmemset (wchar_t *__s, wchar_t __c, size_t __n) noexcept (true) 900171: { 900171: return (((__builtin_constant_p (__builtin_object_size (__s, 0)) && (__builtin_object_size (__s, 0)) == (long unsigned int) -1) || (((__typeof (__n)) 0 < (__typeof (__n)) -1 || (__builtin_constant_p (__n) && (__n) > 0)) && __builtin_constant_p ((((long unsigned int) (__n)) <= ((__builtin_object_size (__s, 0))) / ((sizeof (wchar_t))))) && (((long unsigned int) (__n)) <= ((__builtin_object_size (__s, 0))) / ((sizeof (wchar_t)))))) ? __wmemset_alias (__s, __c, __n) : ((((__typeof (__n)) 0 < (__typeof (__n)) -1 || (__builtin_constant_p (__n) && (__n) > 0)) && __builtin_constant_p ((((long unsigned int) (__n)) <= (__builtin_object_size (__s, 0)) / (sizeof (wchar_t)))) && !(((long unsigned int) (__n)) <= (__builtin_object_size (__s, 0)) / (sizeof (wchar_t)))) ? __wmemset_chk_warn (__s, __c, __n, (__builtin_object_size (__s, 0)) / (sizeof (wchar_t))) : __wmemset_chk (__s, __c, __n, (__builtin_object_size (__s, 0)) / (sizeof (wchar_t))))) 900171: 900171: ; 900171: } 900171: 900171: 900171: extern wchar_t *__wcscpy_alias (wchar_t *__restrict __dest, const wchar_t *__restrict __src) noexcept (true) __asm__ ("" "wcscpy") 900171: 900171: ; 900171: 900171: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * 900171: __attribute__ ((__leaf__)) wcscpy (wchar_t *__restrict __dest, const wchar_t *__restrict __src) noexcept (true) 900171: { 900171: size_t sz = __builtin_object_size (__dest, 2 > 1); 900171: if (sz != (size_t) -1) 900171: return __wcscpy_chk (__dest, __src, sz / sizeof (wchar_t)); 900171: return __wcscpy_alias (__dest, __src); 900171: } 900171: 900171: 900171: extern wchar_t *__wcpcpy_alias (wchar_t *__restrict __dest, const wchar_t *__restrict __src) noexcept (true) __asm__ ("" "wcpcpy") 900171: 900171: ; 900171: 900171: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * 900171: __attribute__ ((__leaf__)) wcpcpy (wchar_t *__restrict __dest, const wchar_t *__restrict __src) noexcept (true) 900171: { 900171: size_t sz = __builtin_object_size (__dest, 2 > 1); 900171: if (sz != (size_t) -1) 900171: return __wcpcpy_chk (__dest, __src, sz / sizeof (wchar_t)); 900171: return __wcpcpy_alias (__dest, __src); 900171: } 900171: 900171: 900171: extern wchar_t *__wcsncpy_alias (wchar_t *__restrict __dest, const wchar_t *__restrict __src, size_t __n) noexcept (true) __asm__ ("" "wcsncpy") 900171: 900171: 900171: ; 900171: extern wchar_t *__wcsncpy_chk_warn (wchar_t *__restrict __dest, const wchar_t *__restrict __src, size_t __n, size_t __destlen) noexcept (true) __asm__ ("" "__wcsncpy_chk") 900171: 900171: 900171: 900171: __attribute__((__warning__ ("wcsncpy called with length bigger than size of destination " "buffer"))) 900171: ; 900171: 900171: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * 900171: __attribute__ ((__leaf__)) wcsncpy (wchar_t *__restrict __dest, const wchar_t *__restrict __src, size_t __n) noexcept (true) 900171: 900171: { 900171: return (((__builtin_constant_p (__builtin_object_size (__dest, 2 > 1)) && (__builtin_object_size (__dest, 2 > 1)) == (long unsigned int) -1) || (((__typeof (__n)) 0 < (__typeof (__n)) -1 || (__builtin_constant_p (__n) && (__n) > 0)) && __builtin_constant_p ((((long unsigned int) (__n)) <= ((__builtin_object_size (__dest, 2 > 1))) / ((sizeof (wchar_t))))) && (((long unsigned int) (__n)) <= ((__builtin_object_size (__dest, 2 > 1))) / ((sizeof (wchar_t)))))) ? __wcsncpy_alias (__dest, __src, __n) : ((((__typeof (__n)) 0 < (__typeof (__n)) -1 || (__builtin_constant_p (__n) && (__n) > 0)) && __builtin_constant_p ((((long unsigned int) (__n)) <= (__builtin_object_size (__dest, 2 > 1)) / (sizeof (wchar_t)))) && !(((long unsigned int) (__n)) <= (__builtin_object_size (__dest, 2 > 1)) / (sizeof (wchar_t)))) ? __wcsncpy_chk_warn (__dest, __src, __n, (__builtin_object_size (__dest, 2 > 1)) / (sizeof (wchar_t))) : __wcsncpy_chk (__dest, __src, __n, (__builtin_object_size (__dest, 2 > 1)) / (sizeof (wchar_t))))) 900171: 900171: ; 900171: } 900171: 900171: 900171: extern wchar_t *__wcpncpy_alias (wchar_t *__restrict __dest, const wchar_t *__restrict __src, size_t __n) noexcept (true) __asm__ ("" "wcpncpy") 900171: 900171: 900171: ; 900171: extern wchar_t *__wcpncpy_chk_warn (wchar_t *__restrict __dest, const wchar_t *__restrict __src, size_t __n, size_t __destlen) noexcept (true) __asm__ ("" "__wcpncpy_chk") 900171: 900171: 900171: 900171: __attribute__((__warning__ ("wcpncpy called with length bigger than size of destination " "buffer"))) 900171: ; 900171: 900171: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * 900171: __attribute__ ((__leaf__)) wcpncpy (wchar_t *__restrict __dest, const wchar_t *__restrict __src, size_t __n) noexcept (true) 900171: 900171: { 900171: return (((__builtin_constant_p (__builtin_object_size (__dest, 2 > 1)) && (__builtin_object_size (__dest, 2 > 1)) == (long unsigned int) -1) || (((__typeof (__n)) 0 < (__typeof (__n)) -1 || (__builtin_constant_p (__n) && (__n) > 0)) && __builtin_constant_p ((((long unsigned int) (__n)) <= ((__builtin_object_size (__dest, 2 > 1))) / ((sizeof (wchar_t))))) && (((long unsigned int) (__n)) <= ((__builtin_object_size (__dest, 2 > 1))) / ((sizeof (wchar_t)))))) ? __wcpncpy_alias (__dest, __src, __n) : ((((__typeof (__n)) 0 < (__typeof (__n)) -1 || (__builtin_constant_p (__n) && (__n) > 0)) && __builtin_constant_p ((((long unsigned int) (__n)) <= (__builtin_object_size (__dest, 2 > 1)) / (sizeof (wchar_t)))) && !(((long unsigned int) (__n)) <= (__builtin_object_size (__dest, 2 > 1)) / (sizeof (wchar_t)))) ? __wcpncpy_chk_warn (__dest, __src, __n, (__builtin_object_size (__dest, 2 > 1)) / (sizeof (wchar_t))) : __wcpncpy_chk (__dest, __src, __n, (__builtin_object_size (__dest, 2 > 1)) / (sizeof (wchar_t))))) 900171: 900171: ; 900171: } 900171: 900171: 900171: extern wchar_t *__wcscat_alias (wchar_t *__restrict __dest, const wchar_t *__restrict __src) noexcept (true) __asm__ ("" "wcscat") 900171: 900171: ; 900171: 900171: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * 900171: __attribute__ ((__leaf__)) wcscat (wchar_t *__restrict __dest, const wchar_t *__restrict __src) noexcept (true) 900171: { 900171: size_t sz = __builtin_object_size (__dest, 2 > 1); 900171: if (sz != (size_t) -1) 900171: return __wcscat_chk (__dest, __src, sz / sizeof (wchar_t)); 900171: return __wcscat_alias (__dest, __src); 900171: } 900171: 900171: 900171: extern wchar_t *__wcsncat_alias (wchar_t *__restrict __dest, const wchar_t *__restrict __src, size_t __n) noexcept (true) __asm__ ("" "wcsncat") 900171: 900171: 900171: ; 900171: 900171: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * 900171: __attribute__ ((__leaf__)) wcsncat (wchar_t *__restrict __dest, const wchar_t *__restrict __src, size_t __n) noexcept (true) 900171: 900171: { 900171: size_t sz = __builtin_object_size (__dest, 2 > 1); 900171: if (sz != (size_t) -1) 900171: return __wcsncat_chk (__dest, __src, __n, sz / sizeof (wchar_t)); 900171: return __wcsncat_alias (__dest, __src, __n); 900171: } 900171: 900171: 900171: 900171: extern int __swprintf_alias (wchar_t *__restrict __s, size_t __n, const wchar_t *__restrict __fmt, ...) noexcept (true) __asm__ ("" "swprintf") 900171: 900171: 900171: ; 900171: 900171: 900171: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 900171: __attribute__ ((__leaf__)) swprintf (wchar_t *__restrict __s, size_t __n, const wchar_t *__restrict __fmt, ...) noexcept (true) 900171: 900171: { 900171: size_t sz = __builtin_object_size (__s, 2 > 1); 900171: if (sz != (size_t) -1 || 2 > 1) 900171: return __swprintf_chk (__s, __n, 2 - 1, 900171: sz / sizeof (wchar_t), __fmt, __builtin_va_arg_pack ()); 900171: return __swprintf_alias (__s, __n, __fmt, __builtin_va_arg_pack ()); 900171: } 900171: # 230 "/usr/aarch64-linux-gnu/include/bits/wchar2.h" 3 900171: extern int __vswprintf_alias (wchar_t *__restrict __s, size_t __n, const wchar_t *__restrict __fmt, __gnuc_va_list __ap) noexcept (true) __asm__ ("" "vswprintf") 900171: 900171: 900171: ; 900171: 900171: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 900171: __attribute__ ((__leaf__)) vswprintf (wchar_t *__restrict __s, size_t __n, const wchar_t *__restrict __fmt, __gnuc_va_list __ap) noexcept (true) 900171: 900171: { 900171: size_t sz = __builtin_object_size (__s, 2 > 1); 900171: if (sz != (size_t) -1 || 2 > 1) 900171: return __vswprintf_chk (__s, __n, 2 - 1, 900171: sz / sizeof (wchar_t), __fmt, __ap); 900171: return __vswprintf_alias (__s, __n, __fmt, __ap); 900171: } 900171: 900171: 900171: 900171: 900171: 900171: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 900171: wprintf (const wchar_t *__restrict __fmt, ...) 900171: { 900171: return __wprintf_chk (2 - 1, __fmt, __builtin_va_arg_pack ()); 900171: } 900171: 900171: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 900171: fwprintf (__FILE *__restrict __stream, const wchar_t *__restrict __fmt, ...) 900171: { 900171: return __fwprintf_chk (__stream, 2 - 1, __fmt, 900171: __builtin_va_arg_pack ()); 900171: } 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 900171: vwprintf (const wchar_t *__restrict __fmt, __gnuc_va_list __ap) 900171: { 900171: return __vwprintf_chk (2 - 1, __fmt, __ap); 900171: } 900171: 900171: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 900171: vfwprintf (__FILE *__restrict __stream, 900171: const wchar_t *__restrict __fmt, __gnuc_va_list __ap) 900171: { 900171: return __vfwprintf_chk (__stream, 2 - 1, __fmt, __ap); 900171: } 900171: 900171: 900171: 900171: extern wchar_t *__fgetws_alias (wchar_t *__restrict __s, int __n, __FILE *__restrict __stream) __asm__ ("" "fgetws") 900171: 900171: __attribute__ ((__warn_unused_result__)); 900171: extern wchar_t *__fgetws_chk_warn (wchar_t *__restrict __s, size_t __size, int __n, __FILE *__restrict __stream) __asm__ ("" "__fgetws_chk") 900171: 900171: 900171: __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("fgetws called with bigger size than length " "of destination buffer"))) 900171: ; 900171: 900171: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) wchar_t * 900171: fgetws (wchar_t *__restrict __s, int __n, __FILE *__restrict __stream) 900171: { 900171: size_t sz = __builtin_object_size (__s, 2 > 1); 900171: if (((__builtin_constant_p (sz) && (sz) == (long unsigned int) -1) || (((__typeof (__n)) 0 < (__typeof (__n)) -1 || (__builtin_constant_p (__n) && (__n) > 0)) && __builtin_constant_p ((((long unsigned int) (__n)) <= ((sz)) / ((sizeof (wchar_t))))) && (((long unsigned int) (__n)) <= ((sz)) / ((sizeof (wchar_t))))))) 900171: return __fgetws_alias (__s, __n, __stream); 900171: if ((((__typeof (__n)) 0 < (__typeof (__n)) -1 || (__builtin_constant_p (__n) && (__n) > 0)) && __builtin_constant_p ((((long unsigned int) (__n)) <= (sz) / (sizeof (wchar_t)))) && !(((long unsigned int) (__n)) <= (sz) / (sizeof (wchar_t))))) 900171: return __fgetws_chk_warn (__s, sz / sizeof (wchar_t), __n, __stream); 900171: return __fgetws_chk (__s, sz / sizeof (wchar_t), __n, __stream); 900171: } 900171: 900171: 900171: extern wchar_t *__fgetws_unlocked_alias (wchar_t *__restrict __s, int __n, __FILE *__restrict __stream) __asm__ ("" "fgetws_unlocked") 900171: 900171: 900171: __attribute__ ((__warn_unused_result__)); 900171: extern wchar_t *__fgetws_unlocked_chk_warn (wchar_t *__restrict __s, size_t __size, int __n, __FILE *__restrict __stream) __asm__ ("" "__fgetws_unlocked_chk") 900171: 900171: 900171: 900171: __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("fgetws_unlocked called with bigger size than length " "of destination buffer"))) 900171: ; 900171: 900171: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) wchar_t * 900171: fgetws_unlocked (wchar_t *__restrict __s, int __n, __FILE *__restrict __stream) 900171: { 900171: size_t sz = __builtin_object_size (__s, 2 > 1); 900171: if (((__builtin_constant_p (sz) && (sz) == (long unsigned int) -1) || (((__typeof (__n)) 0 < (__typeof (__n)) -1 || (__builtin_constant_p (__n) && (__n) > 0)) && __builtin_constant_p ((((long unsigned int) (__n)) <= ((sz)) / ((sizeof (wchar_t))))) && (((long unsigned int) (__n)) <= ((sz)) / ((sizeof (wchar_t))))))) 900171: return __fgetws_unlocked_alias (__s, __n, __stream); 900171: if ((((__typeof (__n)) 0 < (__typeof (__n)) -1 || (__builtin_constant_p (__n) && (__n) > 0)) && __builtin_constant_p ((((long unsigned int) (__n)) <= (sz) / (sizeof (wchar_t)))) && !(((long unsigned int) (__n)) <= (sz) / (sizeof (wchar_t))))) 900171: return __fgetws_unlocked_chk_warn (__s, sz / sizeof (wchar_t), __n, 900171: __stream); 900171: return __fgetws_unlocked_chk (__s, sz / sizeof (wchar_t), __n, __stream); 900171: } 900171: 900171: 900171: 900171: extern size_t __wcrtomb_alias (char *__restrict __s, wchar_t __wchar, mbstate_t *__restrict __ps) noexcept (true) __asm__ ("" "wcrtomb") 900171: 900171: __attribute__ ((__warn_unused_result__)); 900171: 900171: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) size_t 900171: __attribute__ ((__leaf__)) wcrtomb (char *__restrict __s, wchar_t __wchar, mbstate_t *__restrict __ps) noexcept (true) 900171: 900171: { 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: if (__builtin_object_size (__s, 2 > 1) != (size_t) -1 900171: && 16 > __builtin_object_size (__s, 2 > 1)) 900171: return __wcrtomb_chk (__s, __wchar, __ps, __builtin_object_size (__s, 2 > 1)); 900171: return __wcrtomb_alias (__s, __wchar, __ps); 900171: } 900171: 900171: 900171: extern size_t __mbsrtowcs_alias (wchar_t *__restrict __dst, const char **__restrict __src, size_t __len, mbstate_t *__restrict __ps) noexcept (true) __asm__ ("" "mbsrtowcs") 900171: 900171: 900171: 900171: ; 900171: extern size_t __mbsrtowcs_chk_warn (wchar_t *__restrict __dst, const char **__restrict __src, size_t __len, mbstate_t *__restrict __ps, size_t __dstlen) noexcept (true) __asm__ ("" "__mbsrtowcs_chk") 900171: 900171: 900171: 900171: 900171: __attribute__((__warning__ ("mbsrtowcs called with dst buffer smaller than len " "* sizeof (wchar_t)"))) 900171: ; 900171: 900171: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) size_t 900171: __attribute__ ((__leaf__)) mbsrtowcs (wchar_t *__restrict __dst, const char **__restrict __src, size_t __len, mbstate_t *__restrict __ps) noexcept (true) 900171: 900171: { 900171: return (((__builtin_constant_p (__builtin_object_size (__dst, 2 > 1)) && (__builtin_object_size (__dst, 2 > 1)) == (long unsigned int) -1) || (((__typeof (__len)) 0 < (__typeof (__len)) -1 || (__builtin_constant_p (__len) && (__len) > 0)) && __builtin_constant_p ((((long unsigned int) (__len)) <= ((__builtin_object_size (__dst, 2 > 1))) / ((sizeof (wchar_t))))) && (((long unsigned int) (__len)) <= ((__builtin_object_size (__dst, 2 > 1))) / ((sizeof (wchar_t)))))) ? __mbsrtowcs_alias (__dst, __src, __len, __ps) : ((((__typeof (__len)) 0 < (__typeof (__len)) -1 || (__builtin_constant_p (__len) && (__len) > 0)) && __builtin_constant_p ((((long unsigned int) (__len)) <= (__builtin_object_size (__dst, 2 > 1)) / (sizeof (wchar_t)))) && !(((long unsigned int) (__len)) <= (__builtin_object_size (__dst, 2 > 1)) / (sizeof (wchar_t)))) ? __mbsrtowcs_chk_warn (__dst, __src, __len, __ps, (__builtin_object_size (__dst, 2 > 1)) / (sizeof (wchar_t))) : __mbsrtowcs_chk (__dst, __src, __len, __ps, (__builtin_object_size (__dst, 2 > 1)) / (sizeof (wchar_t))))) 900171: 900171: ; 900171: } 900171: 900171: 900171: extern size_t __wcsrtombs_alias (char *__restrict __dst, const wchar_t **__restrict __src, size_t __len, mbstate_t *__restrict __ps) noexcept (true) __asm__ ("" "wcsrtombs") 900171: 900171: 900171: 900171: ; 900171: extern size_t __wcsrtombs_chk_warn (char *__restrict __dst, const wchar_t **__restrict __src, size_t __len, mbstate_t *__restrict __ps, size_t __dstlen) noexcept (true) __asm__ ("" "__wcsrtombs_chk") 900171: 900171: 900171: 900171: 900171: __attribute__((__warning__ ("wcsrtombs called with dst buffer smaller than len"))); 900171: 900171: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) size_t 900171: __attribute__ ((__leaf__)) wcsrtombs (char *__restrict __dst, const wchar_t **__restrict __src, size_t __len, mbstate_t *__restrict __ps) noexcept (true) 900171: 900171: { 900171: return (((__builtin_constant_p (__builtin_object_size (__dst, 2 > 1)) && (__builtin_object_size (__dst, 2 > 1)) == (long unsigned int) -1) || (((__typeof (__len)) 0 < (__typeof (__len)) -1 || (__builtin_constant_p (__len) && (__len) > 0)) && __builtin_constant_p ((((long unsigned int) (__len)) <= ((__builtin_object_size (__dst, 2 > 1))) / ((sizeof (char))))) && (((long unsigned int) (__len)) <= ((__builtin_object_size (__dst, 2 > 1))) / ((sizeof (char)))))) ? __wcsrtombs_alias (__dst, __src, __len, __ps) : ((((__typeof (__len)) 0 < (__typeof (__len)) -1 || (__builtin_constant_p (__len) && (__len) > 0)) && __builtin_constant_p ((((long unsigned int) (__len)) <= (__builtin_object_size (__dst, 2 > 1)) / (sizeof (char)))) && !(((long unsigned int) (__len)) <= (__builtin_object_size (__dst, 2 > 1)) / (sizeof (char)))) ? __wcsrtombs_chk_warn (__dst, __src, __len, __ps, __builtin_object_size (__dst, 2 > 1)) : __wcsrtombs_chk (__dst, __src, __len, __ps, __builtin_object_size (__dst, 2 > 1)))) 900171: 900171: ; 900171: } 900171: 900171: 900171: 900171: extern size_t __mbsnrtowcs_alias (wchar_t *__restrict __dst, const char **__restrict __src, size_t __nmc, size_t __len, mbstate_t *__restrict __ps) noexcept (true) __asm__ ("" "mbsnrtowcs") 900171: 900171: 900171: 900171: ; 900171: extern size_t __mbsnrtowcs_chk_warn (wchar_t *__restrict __dst, const char **__restrict __src, size_t __nmc, size_t __len, mbstate_t *__restrict __ps, size_t __dstlen) noexcept (true) __asm__ ("" "__mbsnrtowcs_chk") 900171: 900171: 900171: 900171: 900171: __attribute__((__warning__ ("mbsnrtowcs called with dst buffer smaller than len " "* sizeof (wchar_t)"))) 900171: ; 900171: 900171: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) size_t 900171: __attribute__ ((__leaf__)) mbsnrtowcs (wchar_t *__restrict __dst, const char **__restrict __src, size_t __nmc, size_t __len, mbstate_t *__restrict __ps) noexcept (true) 900171: 900171: { 900171: return (((__builtin_constant_p (__builtin_object_size (__dst, 2 > 1)) && (__builtin_object_size (__dst, 2 > 1)) == (long unsigned int) -1) || (((__typeof (__len)) 0 < (__typeof (__len)) -1 || (__builtin_constant_p (__len) && (__len) > 0)) && __builtin_constant_p ((((long unsigned int) (__len)) <= ((__builtin_object_size (__dst, 2 > 1))) / ((sizeof (wchar_t))))) && (((long unsigned int) (__len)) <= ((__builtin_object_size (__dst, 2 > 1))) / ((sizeof (wchar_t)))))) ? __mbsnrtowcs_alias (__dst, __src, __nmc, __len, __ps) : ((((__typeof (__len)) 0 < (__typeof (__len)) -1 || (__builtin_constant_p (__len) && (__len) > 0)) && __builtin_constant_p ((((long unsigned int) (__len)) <= (__builtin_object_size (__dst, 2 > 1)) / (sizeof (wchar_t)))) && !(((long unsigned int) (__len)) <= (__builtin_object_size (__dst, 2 > 1)) / (sizeof (wchar_t)))) ? __mbsnrtowcs_chk_warn (__dst, __src, __nmc, __len, __ps, (__builtin_object_size (__dst, 2 > 1)) / (sizeof (wchar_t))) : __mbsnrtowcs_chk (__dst, __src, __nmc, __len, __ps, (__builtin_object_size (__dst, 2 > 1)) / (sizeof (wchar_t))))) 900171: 900171: ; 900171: } 900171: 900171: 900171: extern size_t __wcsnrtombs_alias (char *__restrict __dst, const wchar_t **__restrict __src, size_t __nwc, size_t __len, mbstate_t *__restrict __ps) noexcept (true) __asm__ ("" "wcsnrtombs") 900171: 900171: 900171: 900171: ; 900171: extern size_t __wcsnrtombs_chk_warn (char *__restrict __dst, const wchar_t **__restrict __src, size_t __nwc, size_t __len, mbstate_t *__restrict __ps, size_t __dstlen) noexcept (true) __asm__ ("" "__wcsnrtombs_chk") 900171: 900171: 900171: 900171: 900171: 900171: __attribute__((__warning__ ("wcsnrtombs called with dst buffer smaller than len"))); 900171: 900171: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) size_t 900171: __attribute__ ((__leaf__)) wcsnrtombs (char *__restrict __dst, const wchar_t **__restrict __src, size_t __nwc, size_t __len, mbstate_t *__restrict __ps) noexcept (true) 900171: 900171: { 900171: return (((__builtin_constant_p (__builtin_object_size (__dst, 2 > 1)) && (__builtin_object_size (__dst, 2 > 1)) == (long unsigned int) -1) || (((__typeof (__len)) 0 < (__typeof (__len)) -1 || (__builtin_constant_p (__len) && (__len) > 0)) && __builtin_constant_p ((((long unsigned int) (__len)) <= ((__builtin_object_size (__dst, 2 > 1))) / ((sizeof (char))))) && (((long unsigned int) (__len)) <= ((__builtin_object_size (__dst, 2 > 1))) / ((sizeof (char)))))) ? __wcsnrtombs_alias (__dst, __src, __nwc, __len, __ps) : ((((__typeof (__len)) 0 < (__typeof (__len)) -1 || (__builtin_constant_p (__len) && (__len) > 0)) && __builtin_constant_p ((((long unsigned int) (__len)) <= (__builtin_object_size (__dst, 2 > 1)) / (sizeof (char)))) && !(((long unsigned int) (__len)) <= (__builtin_object_size (__dst, 2 > 1)) / (sizeof (char)))) ? __wcsnrtombs_chk_warn (__dst, __src, __nwc, __len, __ps, __builtin_object_size (__dst, 2 > 1)) : __wcsnrtombs_chk (__dst, __src, __nwc, __len, __ps, __builtin_object_size (__dst, 2 > 1)))) 900171: 900171: ; 900171: } 900171: # 880 "/usr/aarch64-linux-gnu/include/wchar.h" 2 3 900171: 900171: 900171: } 900171: # 45 "/usr/aarch64-linux-gnu/include/c++/12/cwchar" 2 3 900171: # 62 "/usr/aarch64-linux-gnu/include/c++/12/cwchar" 3 900171: namespace std 900171: { 900171: using ::mbstate_t; 900171: } 900171: # 135 "/usr/aarch64-linux-gnu/include/c++/12/cwchar" 3 900171: extern "C++" 900171: { 900171: namespace std __attribute__ ((__visibility__ ("default"))) 900171: { 900171: 900171: 900171: using ::wint_t; 900171: 900171: using ::btowc; 900171: using ::fgetwc; 900171: using ::fgetws; 900171: using ::fputwc; 900171: using ::fputws; 900171: using ::fwide; 900171: using ::fwprintf; 900171: using ::fwscanf; 900171: using ::getwc; 900171: using ::getwchar; 900171: using ::mbrlen; 900171: using ::mbrtowc; 900171: using ::mbsinit; 900171: using ::mbsrtowcs; 900171: using ::putwc; 900171: using ::putwchar; 900171: 900171: using ::swprintf; 900171: 900171: using ::swscanf; 900171: using ::ungetwc; 900171: using ::vfwprintf; 900171: 900171: using ::vfwscanf; 900171: 900171: 900171: using ::vswprintf; 900171: 900171: 900171: using ::vswscanf; 900171: 900171: using ::vwprintf; 900171: 900171: using ::vwscanf; 900171: 900171: using ::wcrtomb; 900171: using ::wcscat; 900171: using ::wcscmp; 900171: using ::wcscoll; 900171: using ::wcscpy; 900171: using ::wcscspn; 900171: using ::wcsftime; 900171: using ::wcslen; 900171: using ::wcsncat; 900171: using ::wcsncmp; 900171: using ::wcsncpy; 900171: using ::wcsrtombs; 900171: using ::wcsspn; 900171: using ::wcstod; 900171: 900171: using ::wcstof; 900171: 900171: using ::wcstok; 900171: using ::wcstol; 900171: using ::wcstoul; 900171: using ::wcsxfrm; 900171: using ::wctob; 900171: using ::wmemcmp; 900171: using ::wmemcpy; 900171: using ::wmemmove; 900171: using ::wmemset; 900171: using ::wprintf; 900171: using ::wscanf; 900171: using ::wcschr; 900171: using ::wcspbrk; 900171: using ::wcsrchr; 900171: using ::wcsstr; 900171: using ::wmemchr; 900171: # 234 "/usr/aarch64-linux-gnu/include/c++/12/cwchar" 3 900171: 900171: } 900171: } 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: namespace __gnu_cxx 900171: { 900171: 900171: 900171: 900171: 900171: 900171: using ::wcstold; 900171: # 260 "/usr/aarch64-linux-gnu/include/c++/12/cwchar" 3 900171: using ::wcstoll; 900171: using ::wcstoull; 900171: 900171: } 900171: 900171: namespace std 900171: { 900171: using ::__gnu_cxx::wcstold; 900171: using ::__gnu_cxx::wcstoll; 900171: using ::__gnu_cxx::wcstoull; 900171: } 900171: # 280 "/usr/aarch64-linux-gnu/include/c++/12/cwchar" 3 900171: namespace std 900171: { 900171: 900171: using std::wcstof; 900171: 900171: 900171: using std::vfwscanf; 900171: 900171: 900171: using std::vswscanf; 900171: 900171: 900171: using std::vwscanf; 900171: 900171: 900171: 900171: using std::wcstold; 900171: using std::wcstoll; 900171: using std::wcstoull; 900171: 900171: } 900171: # 41 "/usr/aarch64-linux-gnu/include/c++/12/bits/postypes.h" 2 3 900171: 900171: namespace std __attribute__ ((__visibility__ ("default"))) 900171: { 900171: 900171: # 62 "/usr/aarch64-linux-gnu/include/c++/12/bits/postypes.h" 3 900171: typedef long int streamoff; 900171: 900171: 900171: 900171: 900171: 900171: typedef ptrdiff_t streamsize; 900171: # 81 "/usr/aarch64-linux-gnu/include/c++/12/bits/postypes.h" 3 900171: template 900171: class fpos 900171: { 900171: private: 900171: streamoff _M_off; 900171: _StateT _M_state; 900171: 900171: public: 900171: 900171: 900171: 900171: 900171: fpos() 900171: : _M_off(0), _M_state() { } 900171: # 103 "/usr/aarch64-linux-gnu/include/c++/12/bits/postypes.h" 3 900171: fpos(streamoff __off) 900171: : _M_off(__off), _M_state() { } 900171: 900171: 900171: fpos(const fpos&) = default; 900171: fpos& operator=(const fpos&) = default; 900171: ~fpos() = default; 900171: 900171: 900171: 900171: operator streamoff() const { return _M_off; } 900171: 900171: 900171: void 900171: state(_StateT __st) 900171: { _M_state = __st; } 900171: 900171: 900171: _StateT 900171: state() const 900171: { return _M_state; } 900171: 900171: 900171: 900171: 900171: 900171: fpos& 900171: operator+=(streamoff __off) 900171: { 900171: _M_off += __off; 900171: return *this; 900171: } 900171: 900171: 900171: 900171: 900171: 900171: fpos& 900171: operator-=(streamoff __off) 900171: { 900171: _M_off -= __off; 900171: return *this; 900171: } 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: fpos 900171: operator+(streamoff __off) const 900171: { 900171: fpos __pos(*this); 900171: __pos += __off; 900171: return __pos; 900171: } 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: fpos 900171: operator-(streamoff __off) const 900171: { 900171: fpos __pos(*this); 900171: __pos -= __off; 900171: return __pos; 900171: } 900171: 900171: 900171: 900171: 900171: 900171: 900171: streamoff 900171: operator-(const fpos& __other) const 900171: { return _M_off - __other._M_off; } 900171: }; 900171: 900171: 900171: 900171: 900171: 900171: 900171: template 900171: inline bool 900171: operator==(const fpos<_StateT>& __lhs, const fpos<_StateT>& __rhs) 900171: { return streamoff(__lhs) == streamoff(__rhs); } 900171: 900171: template 900171: inline bool 900171: operator!=(const fpos<_StateT>& __lhs, const fpos<_StateT>& __rhs) 900171: { return streamoff(__lhs) != streamoff(__rhs); } 900171: 900171: 900171: 900171: 900171: 900171: typedef fpos streampos; 900171: 900171: typedef fpos wstreampos; 900171: # 215 "/usr/aarch64-linux-gnu/include/c++/12/bits/postypes.h" 3 900171: typedef fpos u16streampos; 900171: 900171: typedef fpos u32streampos; 900171: 900171: 900171: 900171: } 900171: # 41 "/usr/aarch64-linux-gnu/include/c++/12/iosfwd" 2 3 900171: 900171: namespace std __attribute__ ((__visibility__ ("default"))) 900171: { 900171: 900171: # 74 "/usr/aarch64-linux-gnu/include/c++/12/iosfwd" 3 900171: class ios_base; 900171: 900171: template > 900171: class basic_ios; 900171: 900171: template > 900171: class basic_streambuf; 900171: 900171: template > 900171: class basic_istream; 900171: 900171: template > 900171: class basic_ostream; 900171: 900171: template > 900171: class basic_iostream; 900171: 900171: 900171: namespace __cxx11 { 900171: 900171: template, 900171: typename _Alloc = allocator<_CharT> > 900171: class basic_stringbuf; 900171: 900171: template, 900171: typename _Alloc = allocator<_CharT> > 900171: class basic_istringstream; 900171: 900171: template, 900171: typename _Alloc = allocator<_CharT> > 900171: class basic_ostringstream; 900171: 900171: template, 900171: typename _Alloc = allocator<_CharT> > 900171: class basic_stringstream; 900171: 900171: } 900171: 900171: template > 900171: class basic_filebuf; 900171: 900171: template > 900171: class basic_ifstream; 900171: 900171: template > 900171: class basic_ofstream; 900171: 900171: template > 900171: class basic_fstream; 900171: 900171: template > 900171: class istreambuf_iterator; 900171: 900171: template > 900171: class ostreambuf_iterator; 900171: 900171: 900171: 900171: typedef basic_ios ios; 900171: 900171: 900171: typedef basic_streambuf streambuf; 900171: 900171: 900171: typedef basic_istream istream; 900171: 900171: 900171: typedef basic_ostream ostream; 900171: 900171: 900171: typedef basic_iostream iostream; 900171: 900171: 900171: typedef basic_stringbuf stringbuf; 900171: 900171: 900171: typedef basic_istringstream istringstream; 900171: 900171: 900171: typedef basic_ostringstream ostringstream; 900171: 900171: 900171: typedef basic_stringstream stringstream; 900171: 900171: 900171: typedef basic_filebuf filebuf; 900171: 900171: 900171: typedef basic_ifstream ifstream; 900171: 900171: 900171: typedef basic_ofstream ofstream; 900171: 900171: 900171: typedef basic_fstream fstream; 900171: 900171: 900171: 900171: typedef basic_ios wios; 900171: 900171: 900171: typedef basic_streambuf wstreambuf; 900171: 900171: 900171: typedef basic_istream wistream; 900171: 900171: 900171: typedef basic_ostream wostream; 900171: 900171: 900171: typedef basic_iostream wiostream; 900171: 900171: 900171: typedef basic_stringbuf wstringbuf; 900171: 900171: 900171: typedef basic_istringstream wistringstream; 900171: 900171: 900171: typedef basic_ostringstream wostringstream; 900171: 900171: 900171: typedef basic_stringstream wstringstream; 900171: 900171: 900171: typedef basic_filebuf wfilebuf; 900171: 900171: 900171: typedef basic_ifstream wifstream; 900171: 900171: 900171: typedef basic_ofstream wofstream; 900171: 900171: 900171: typedef basic_fstream wfstream; 900171: # 253 "/usr/aarch64-linux-gnu/include/c++/12/iosfwd" 3 900171: 900171: } 900171: # 53 "/usr/aarch64-linux-gnu/include/c++/12/bits/shared_ptr.h" 2 3 900171: # 1 "/usr/aarch64-linux-gnu/include/c++/12/bits/shared_ptr_base.h" 1 3 900171: # 52 "/usr/aarch64-linux-gnu/include/c++/12/bits/shared_ptr_base.h" 3 900171: # 1 "/usr/aarch64-linux-gnu/include/c++/12/typeinfo" 1 3 900171: # 32 "/usr/aarch64-linux-gnu/include/c++/12/typeinfo" 3 900171: 900171: # 33 "/usr/aarch64-linux-gnu/include/c++/12/typeinfo" 3 900171: 900171: 900171: 900171: 900171: 900171: 900171: #pragma GCC visibility push(default) 900171: 900171: 900171: 900171: 900171: 900171: extern "C++" { 900171: 900171: namespace __cxxabiv1 900171: { 900171: class __class_type_info; 900171: } 900171: # 84 "/usr/aarch64-linux-gnu/include/c++/12/typeinfo" 3 900171: namespace std 900171: { 900171: 900171: 900171: 900171: 900171: 900171: 900171: class type_info 900171: { 900171: public: 900171: 900171: 900171: 900171: 900171: virtual ~type_info(); 900171: 900171: 900171: 900171: const char* name() const noexcept 900171: { return __name[0] == '*' ? __name + 1 : __name; } 900171: 900171: 900171: 900171: bool before(const type_info& __arg) const noexcept; 900171: 900171: 900171: bool operator==(const type_info& __arg) const noexcept; 900171: 900171: 900171: bool operator!=(const type_info& __arg) const noexcept 900171: { return !operator==(__arg); } 900171: 900171: 900171: 900171: size_t hash_code() const noexcept 900171: { 900171: 900171: return _Hash_bytes(name(), __builtin_strlen(name()), 900171: static_cast(0xc70f6907UL)); 900171: 900171: 900171: 900171: } 900171: 900171: 900171: 900171: virtual bool __is_pointer_p() const; 900171: 900171: 900171: virtual bool __is_function_p() const; 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: virtual bool __do_catch(const type_info *__thr_type, void **__thr_obj, 900171: unsigned __outer) const; 900171: 900171: 900171: virtual bool __do_upcast(const __cxxabiv1::__class_type_info *__target, 900171: void **__obj_ptr) const; 900171: 900171: protected: 900171: const char *__name; 900171: 900171: explicit type_info(const char *__n): __name(__n) { } 900171: 900171: private: 900171: 900171: 900171: type_info& operator=(const type_info&) = delete; 900171: type_info(const type_info&) = delete; 900171: # 167 "/usr/aarch64-linux-gnu/include/c++/12/typeinfo" 3 900171: }; 900171: 900171: 900171: inline bool 900171: type_info::before(const type_info& __arg) const noexcept 900171: { 900171: 900171: 900171: 900171: 900171: if (__name[0] != '*' || __arg.__name[0] != '*') 900171: return __builtin_strcmp (__name, __arg.__name) < 0; 900171: # 187 "/usr/aarch64-linux-gnu/include/c++/12/typeinfo" 3 900171: return __name < __arg.__name; 900171: } 900171: 900171: 900171: 900171: inline bool 900171: type_info::operator==(const type_info& __arg) const noexcept 900171: { 900171: if (std::__is_constant_evaluated()) 900171: return this == &__arg; 900171: 900171: if (__name == __arg.__name) 900171: return true; 900171: 900171: 900171: 900171: 900171: 900171: 900171: return __name[0] != '*' && __builtin_strcmp (__name, __arg.name()) == 0; 900171: 900171: 900171: 900171: } 900171: # 220 "/usr/aarch64-linux-gnu/include/c++/12/typeinfo" 3 900171: class bad_cast : public exception 900171: { 900171: public: 900171: bad_cast() noexcept { } 900171: 900171: 900171: 900171: virtual ~bad_cast() noexcept; 900171: 900171: 900171: virtual const char* what() const noexcept; 900171: }; 900171: 900171: 900171: 900171: 900171: 900171: class bad_typeid : public exception 900171: { 900171: public: 900171: bad_typeid () noexcept { } 900171: 900171: 900171: 900171: virtual ~bad_typeid() noexcept; 900171: 900171: 900171: virtual const char* what() const noexcept; 900171: }; 900171: } 900171: 900171: } 900171: 900171: #pragma GCC visibility pop 900171: # 53 "/usr/aarch64-linux-gnu/include/c++/12/bits/shared_ptr_base.h" 2 3 900171: # 1 "/usr/aarch64-linux-gnu/include/c++/12/bits/allocated_ptr.h" 1 3 900171: # 40 "/usr/aarch64-linux-gnu/include/c++/12/bits/allocated_ptr.h" 3 900171: namespace std __attribute__ ((__visibility__ ("default"))) 900171: { 900171: 900171: 900171: 900171: 900171: template 900171: struct __allocated_ptr 900171: { 900171: using pointer = typename allocator_traits<_Alloc>::pointer; 900171: using value_type = typename allocator_traits<_Alloc>::value_type; 900171: 900171: 900171: __allocated_ptr(_Alloc& __a, pointer __ptr) noexcept 900171: : _M_alloc(std::__addressof(__a)), _M_ptr(__ptr) 900171: { } 900171: 900171: 900171: template>> 900171: __allocated_ptr(_Alloc& __a, _Ptr __ptr) 900171: : _M_alloc(std::__addressof(__a)), 900171: _M_ptr(pointer_traits::pointer_to(*__ptr)) 900171: { } 900171: 900171: 900171: __allocated_ptr(__allocated_ptr&& __gd) noexcept 900171: : _M_alloc(__gd._M_alloc), _M_ptr(__gd._M_ptr) 900171: { __gd._M_ptr = nullptr; } 900171: 900171: 900171: ~__allocated_ptr() 900171: { 900171: if (_M_ptr != nullptr) 900171: std::allocator_traits<_Alloc>::deallocate(*_M_alloc, _M_ptr, 1); 900171: } 900171: 900171: 900171: __allocated_ptr& 900171: operator=(std::nullptr_t) noexcept 900171: { 900171: _M_ptr = nullptr; 900171: return *this; 900171: } 900171: 900171: 900171: value_type* get() { return std::__to_address(_M_ptr); } 900171: 900171: private: 900171: _Alloc* _M_alloc; 900171: pointer _M_ptr; 900171: }; 900171: 900171: 900171: template 900171: __allocated_ptr<_Alloc> 900171: __allocate_guarded(_Alloc& __a) 900171: { 900171: return { __a, std::allocator_traits<_Alloc>::allocate(__a, 1) }; 900171: } 900171: 900171: 900171: 900171: } 900171: # 54 "/usr/aarch64-linux-gnu/include/c++/12/bits/shared_ptr_base.h" 2 3 900171: 900171: 900171: 900171: # 1 "/usr/aarch64-linux-gnu/include/c++/12/bits/refwrap.h" 1 3 900171: # 33 "/usr/aarch64-linux-gnu/include/c++/12/bits/refwrap.h" 3 900171: 900171: # 34 "/usr/aarch64-linux-gnu/include/c++/12/bits/refwrap.h" 3 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: namespace std __attribute__ ((__visibility__ ("default"))) 900171: { 900171: 900171: # 52 "/usr/aarch64-linux-gnu/include/c++/12/bits/refwrap.h" 3 900171: template 900171: struct _Maybe_unary_or_binary_function { }; 900171: 900171: 900171: #pragma GCC diagnostic push 900171: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 900171: 900171: 900171: template 900171: struct _Maybe_unary_or_binary_function<_Res, _T1> 900171: : std::unary_function<_T1, _Res> { }; 900171: 900171: 900171: template 900171: struct _Maybe_unary_or_binary_function<_Res, _T1, _T2> 900171: : std::binary_function<_T1, _T2, _Res> { }; 900171: 900171: #pragma GCC diagnostic pop 900171: 900171: template 900171: struct _Mem_fn_traits; 900171: 900171: template 900171: struct _Mem_fn_traits_base 900171: { 900171: using __result_type = _Res; 900171: using __maybe_type 900171: = _Maybe_unary_or_binary_function<_Res, _Class*, _ArgTypes...>; 900171: using __arity = integral_constant; 900171: }; 900171: # 103 "/usr/aarch64-linux-gnu/include/c++/12/bits/refwrap.h" 3 900171: template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) > : _Mem_fn_traits_base<_Res, _Class, _ArgTypes...> { using __vararg = false_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) > : _Mem_fn_traits_base<_Res, _Class, _ArgTypes...> { using __vararg = true_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) const > : _Mem_fn_traits_base<_Res, const _Class, _ArgTypes...> { using __vararg = false_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) const > : _Mem_fn_traits_base<_Res, const _Class, _ArgTypes...> { using __vararg = true_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) volatile > : _Mem_fn_traits_base<_Res, volatile _Class, _ArgTypes...> { using __vararg = false_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) volatile > : _Mem_fn_traits_base<_Res, volatile _Class, _ArgTypes...> { using __vararg = true_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) const volatile > : _Mem_fn_traits_base<_Res, const volatile _Class, _ArgTypes...> { using __vararg = false_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) const volatile > : _Mem_fn_traits_base<_Res, const volatile _Class, _ArgTypes...> { using __vararg = true_type; }; 900171: template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) &> : _Mem_fn_traits_base<_Res, _Class, _ArgTypes...> { using __vararg = false_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) &> : _Mem_fn_traits_base<_Res, _Class, _ArgTypes...> { using __vararg = true_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) const &> : _Mem_fn_traits_base<_Res, const _Class, _ArgTypes...> { using __vararg = false_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) const &> : _Mem_fn_traits_base<_Res, const _Class, _ArgTypes...> { using __vararg = true_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) volatile &> : _Mem_fn_traits_base<_Res, volatile _Class, _ArgTypes...> { using __vararg = false_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) volatile &> : _Mem_fn_traits_base<_Res, volatile _Class, _ArgTypes...> { using __vararg = true_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) const volatile &> : _Mem_fn_traits_base<_Res, const volatile _Class, _ArgTypes...> { using __vararg = false_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) const volatile &> : _Mem_fn_traits_base<_Res, const volatile _Class, _ArgTypes...> { using __vararg = true_type; }; 900171: template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) &&> : _Mem_fn_traits_base<_Res, _Class, _ArgTypes...> { using __vararg = false_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) &&> : _Mem_fn_traits_base<_Res, _Class, _ArgTypes...> { using __vararg = true_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) const &&> : _Mem_fn_traits_base<_Res, const _Class, _ArgTypes...> { using __vararg = false_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) const &&> : _Mem_fn_traits_base<_Res, const _Class, _ArgTypes...> { using __vararg = true_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) volatile &&> : _Mem_fn_traits_base<_Res, volatile _Class, _ArgTypes...> { using __vararg = false_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) volatile &&> : _Mem_fn_traits_base<_Res, volatile _Class, _ArgTypes...> { using __vararg = true_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) const volatile &&> : _Mem_fn_traits_base<_Res, const volatile _Class, _ArgTypes...> { using __vararg = false_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) const volatile &&> : _Mem_fn_traits_base<_Res, const volatile _Class, _ArgTypes...> { using __vararg = true_type; }; 900171: # 117 "/usr/aarch64-linux-gnu/include/c++/12/bits/refwrap.h" 3 900171: template> 900171: struct _Maybe_get_result_type 900171: { }; 900171: 900171: template 900171: struct _Maybe_get_result_type<_Functor, 900171: __void_t> 900171: { typedef typename _Functor::result_type result_type; }; 900171: 900171: 900171: 900171: 900171: 900171: template 900171: struct _Weak_result_type_impl 900171: : _Maybe_get_result_type<_Functor> 900171: { }; 900171: 900171: 900171: template 900171: struct _Weak_result_type_impl<_Res(_ArgTypes...) > 900171: { typedef _Res result_type; }; 900171: 900171: 900171: template 900171: struct _Weak_result_type_impl<_Res(_ArgTypes......) > 900171: { typedef _Res result_type; }; 900171: 900171: 900171: template 900171: struct _Weak_result_type_impl<_Res(*)(_ArgTypes...) > 900171: { typedef _Res result_type; }; 900171: 900171: 900171: template 900171: struct 900171: _Weak_result_type_impl<_Res(*)(_ArgTypes......) > 900171: { typedef _Res result_type; }; 900171: 900171: 900171: template::value> 900171: struct _Weak_result_type_memfun 900171: : _Weak_result_type_impl<_Functor> 900171: { }; 900171: 900171: 900171: template 900171: struct _Weak_result_type_memfun<_MemFunPtr, true> 900171: { 900171: using result_type = typename _Mem_fn_traits<_MemFunPtr>::__result_type; 900171: }; 900171: 900171: 900171: template 900171: struct _Weak_result_type_memfun<_Func _Class::*, false> 900171: { }; 900171: 900171: 900171: 900171: 900171: 900171: template 900171: struct _Weak_result_type 900171: : _Weak_result_type_memfun::type> 900171: { }; 900171: 900171: 900171: 900171: template> 900171: struct _Refwrap_base_arg1 900171: { }; 900171: 900171: 900171: template 900171: struct _Refwrap_base_arg1<_Tp, 900171: __void_t> 900171: { 900171: typedef typename _Tp::argument_type argument_type; 900171: }; 900171: 900171: 900171: template> 900171: struct _Refwrap_base_arg2 900171: { }; 900171: 900171: 900171: template 900171: struct _Refwrap_base_arg2<_Tp, 900171: __void_t> 900171: { 900171: typedef typename _Tp::first_argument_type first_argument_type; 900171: typedef typename _Tp::second_argument_type second_argument_type; 900171: }; 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: template 900171: struct _Reference_wrapper_base 900171: : _Weak_result_type<_Tp>, _Refwrap_base_arg1<_Tp>, _Refwrap_base_arg2<_Tp> 900171: { }; 900171: 900171: 900171: #pragma GCC diagnostic push 900171: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 900171: 900171: 900171: template 900171: struct _Reference_wrapper_base<_Res(_T1) > 900171: : unary_function<_T1, _Res> 900171: { }; 900171: 900171: template 900171: struct _Reference_wrapper_base<_Res(_T1) const> 900171: : unary_function<_T1, _Res> 900171: { }; 900171: 900171: template 900171: struct _Reference_wrapper_base<_Res(_T1) volatile> 900171: : unary_function<_T1, _Res> 900171: { }; 900171: 900171: template 900171: struct _Reference_wrapper_base<_Res(_T1) const volatile> 900171: : unary_function<_T1, _Res> 900171: { }; 900171: 900171: 900171: template 900171: struct _Reference_wrapper_base<_Res(_T1, _T2) > 900171: : binary_function<_T1, _T2, _Res> 900171: { }; 900171: 900171: template 900171: struct _Reference_wrapper_base<_Res(_T1, _T2) const> 900171: : binary_function<_T1, _T2, _Res> 900171: { }; 900171: 900171: template 900171: struct _Reference_wrapper_base<_Res(_T1, _T2) volatile> 900171: : binary_function<_T1, _T2, _Res> 900171: { }; 900171: 900171: template 900171: struct _Reference_wrapper_base<_Res(_T1, _T2) const volatile> 900171: : binary_function<_T1, _T2, _Res> 900171: { }; 900171: 900171: 900171: template 900171: struct _Reference_wrapper_base<_Res(*)(_T1) > 900171: : unary_function<_T1, _Res> 900171: { }; 900171: 900171: 900171: template 900171: struct _Reference_wrapper_base<_Res(*)(_T1, _T2) > 900171: : binary_function<_T1, _T2, _Res> 900171: { }; 900171: 900171: template::value> 900171: struct _Reference_wrapper_base_memfun 900171: : _Reference_wrapper_base<_Tp> 900171: { }; 900171: 900171: template 900171: struct _Reference_wrapper_base_memfun<_MemFunPtr, true> 900171: : _Mem_fn_traits<_MemFunPtr>::__maybe_type 900171: { 900171: using result_type = typename _Mem_fn_traits<_MemFunPtr>::__result_type; 900171: }; 900171: #pragma GCC diagnostic pop 900171: # 302 "/usr/aarch64-linux-gnu/include/c++/12/bits/refwrap.h" 3 900171: template 900171: class reference_wrapper 900171: 900171: 900171: 900171: : public _Reference_wrapper_base_memfun::type> 900171: 900171: { 900171: _Tp* _M_data; 900171: 900171: 900171: static _Tp* _S_fun(_Tp& __r) noexcept { return std::__addressof(__r); } 900171: 900171: static void _S_fun(_Tp&&) = delete; 900171: 900171: template> 900171: using __not_same 900171: = typename enable_if::value>::type; 900171: 900171: public: 900171: typedef _Tp type; 900171: 900171: 900171: 900171: 900171: template, typename 900171: = decltype(reference_wrapper::_S_fun(std::declval<_Up>()))> 900171: 900171: reference_wrapper(_Up&& __uref) 900171: noexcept(noexcept(reference_wrapper::_S_fun(std::declval<_Up>()))) 900171: : _M_data(reference_wrapper::_S_fun(std::forward<_Up>(__uref))) 900171: { } 900171: 900171: reference_wrapper(const reference_wrapper&) = default; 900171: 900171: reference_wrapper& 900171: operator=(const reference_wrapper&) = default; 900171: 900171: 900171: operator _Tp&() const noexcept 900171: { return this->get(); } 900171: 900171: 900171: _Tp& 900171: get() const noexcept 900171: { return *_M_data; } 900171: 900171: template 900171: 900171: typename result_of<_Tp&(_Args&&...)>::type 900171: operator()(_Args&&... __args) const 900171: { 900171: 900171: 900171: 900171: 900171: return std::__invoke(get(), std::forward<_Args>(__args)...); 900171: } 900171: }; 900171: # 370 "/usr/aarch64-linux-gnu/include/c++/12/bits/refwrap.h" 3 900171: template 900171: 900171: inline reference_wrapper<_Tp> 900171: ref(_Tp& __t) noexcept 900171: { return reference_wrapper<_Tp>(__t); } 900171: 900171: 900171: template 900171: 900171: inline reference_wrapper 900171: cref(const _Tp& __t) noexcept 900171: { return reference_wrapper(__t); } 900171: 900171: template 900171: void ref(const _Tp&&) = delete; 900171: 900171: template 900171: void cref(const _Tp&&) = delete; 900171: 900171: 900171: template 900171: 900171: inline reference_wrapper<_Tp> 900171: ref(reference_wrapper<_Tp> __t) noexcept 900171: { return __t; } 900171: 900171: 900171: template 900171: 900171: inline reference_wrapper 900171: cref(reference_wrapper<_Tp> __t) noexcept 900171: { return { __t.get() }; } 900171: 900171: 900171: 900171: 900171: } 900171: # 58 "/usr/aarch64-linux-gnu/include/c++/12/bits/shared_ptr_base.h" 2 3 900171: 900171: 900171: # 1 "/usr/aarch64-linux-gnu/include/c++/12/ext/aligned_buffer.h" 1 3 900171: # 32 "/usr/aarch64-linux-gnu/include/c++/12/ext/aligned_buffer.h" 3 900171: 900171: # 33 "/usr/aarch64-linux-gnu/include/c++/12/ext/aligned_buffer.h" 3 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: namespace __gnu_cxx 900171: { 900171: 900171: 900171: 900171: 900171: template 900171: struct __aligned_membuf 900171: { 900171: 900171: 900171: 900171: 900171: 900171: struct _Tp2 { _Tp _M_t; }; 900171: 900171: alignas(__alignof__(_Tp2::_M_t)) unsigned char _M_storage[sizeof(_Tp)]; 900171: 900171: __aligned_membuf() = default; 900171: 900171: 900171: __aligned_membuf(std::nullptr_t) { } 900171: 900171: void* 900171: _M_addr() noexcept 900171: { return static_cast(&_M_storage); } 900171: 900171: const void* 900171: _M_addr() const noexcept 900171: { return static_cast(&_M_storage); } 900171: 900171: _Tp* 900171: _M_ptr() noexcept 900171: { return static_cast<_Tp*>(_M_addr()); } 900171: 900171: const _Tp* 900171: _M_ptr() const noexcept 900171: { return static_cast(_M_addr()); } 900171: }; 900171: # 89 "/usr/aarch64-linux-gnu/include/c++/12/ext/aligned_buffer.h" 3 900171: template 900171: struct __aligned_buffer 900171: : std::aligned_storage 900171: { 900171: typename 900171: std::aligned_storage::type _M_storage; 900171: 900171: __aligned_buffer() = default; 900171: 900171: 900171: __aligned_buffer(std::nullptr_t) { } 900171: 900171: void* 900171: _M_addr() noexcept 900171: { 900171: return static_cast(&_M_storage); 900171: } 900171: 900171: const void* 900171: _M_addr() const noexcept 900171: { 900171: return static_cast(&_M_storage); 900171: } 900171: 900171: _Tp* 900171: _M_ptr() noexcept 900171: { return static_cast<_Tp*>(_M_addr()); } 900171: 900171: const _Tp* 900171: _M_ptr() const noexcept 900171: { return static_cast(_M_addr()); } 900171: }; 900171: 900171: 900171: } 900171: # 61 "/usr/aarch64-linux-gnu/include/c++/12/bits/shared_ptr_base.h" 2 3 900171: # 1 "/usr/aarch64-linux-gnu/include/c++/12/ext/atomicity.h" 1 3 900171: # 32 "/usr/aarch64-linux-gnu/include/c++/12/ext/atomicity.h" 3 900171: 900171: # 33 "/usr/aarch64-linux-gnu/include/c++/12/ext/atomicity.h" 3 900171: 900171: 900171: # 1 "/usr/aarch64-linux-gnu/include/c++/12/aarch64-linux-gnu/bits/gthr.h" 1 3 900171: # 30 "/usr/aarch64-linux-gnu/include/c++/12/aarch64-linux-gnu/bits/gthr.h" 3 900171: #pragma GCC visibility push(default) 900171: # 148 "/usr/aarch64-linux-gnu/include/c++/12/aarch64-linux-gnu/bits/gthr.h" 3 900171: # 1 "/usr/aarch64-linux-gnu/include/c++/12/aarch64-linux-gnu/bits/gthr-default.h" 1 3 900171: # 35 "/usr/aarch64-linux-gnu/include/c++/12/aarch64-linux-gnu/bits/gthr-default.h" 3 900171: # 1 "/usr/aarch64-linux-gnu/include/pthread.h" 1 3 900171: # 22 "/usr/aarch64-linux-gnu/include/pthread.h" 3 900171: # 1 "/usr/aarch64-linux-gnu/include/sched.h" 1 3 900171: # 29 "/usr/aarch64-linux-gnu/include/sched.h" 3 900171: # 1 "/usr/lib/gcc-cross/aarch64-linux-gnu/12/include/stddef.h" 1 3 4 900171: # 30 "/usr/aarch64-linux-gnu/include/sched.h" 2 3 900171: # 43 "/usr/aarch64-linux-gnu/include/sched.h" 3 900171: # 1 "/usr/aarch64-linux-gnu/include/bits/sched.h" 1 3 900171: # 80 "/usr/aarch64-linux-gnu/include/bits/sched.h" 3 900171: # 1 "/usr/aarch64-linux-gnu/include/bits/types/struct_sched_param.h" 1 3 900171: # 23 "/usr/aarch64-linux-gnu/include/bits/types/struct_sched_param.h" 3 900171: struct sched_param 900171: { 900171: int sched_priority; 900171: }; 900171: # 81 "/usr/aarch64-linux-gnu/include/bits/sched.h" 2 3 900171: 900171: extern "C" { 900171: 900171: 900171: 900171: extern int clone (int (*__fn) (void *__arg), void *__child_stack, 900171: int __flags, void *__arg, ...) noexcept (true); 900171: 900171: 900171: extern int unshare (int __flags) noexcept (true); 900171: 900171: 900171: extern int sched_getcpu (void) noexcept (true); 900171: 900171: 900171: extern int getcpu (unsigned int *, unsigned int *) noexcept (true); 900171: 900171: 900171: extern int setns (int __fd, int __nstype) noexcept (true); 900171: 900171: 900171: } 900171: # 44 "/usr/aarch64-linux-gnu/include/sched.h" 2 3 900171: # 1 "/usr/aarch64-linux-gnu/include/bits/cpu-set.h" 1 3 900171: # 32 "/usr/aarch64-linux-gnu/include/bits/cpu-set.h" 3 900171: typedef unsigned long int __cpu_mask; 900171: 900171: 900171: 900171: 900171: 900171: 900171: typedef struct 900171: { 900171: __cpu_mask __bits[1024 / (8 * sizeof (__cpu_mask))]; 900171: } cpu_set_t; 900171: # 115 "/usr/aarch64-linux-gnu/include/bits/cpu-set.h" 3 900171: extern "C" { 900171: 900171: extern int __sched_cpucount (size_t __setsize, const cpu_set_t *__setp) 900171: noexcept (true); 900171: extern cpu_set_t *__sched_cpualloc (size_t __count) noexcept (true) __attribute__ ((__warn_unused_result__)); 900171: extern void __sched_cpufree (cpu_set_t *__set) noexcept (true); 900171: 900171: } 900171: # 45 "/usr/aarch64-linux-gnu/include/sched.h" 2 3 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern "C" { 900171: 900171: 900171: extern int sched_setparam (__pid_t __pid, const struct sched_param *__param) 900171: noexcept (true); 900171: 900171: 900171: extern int sched_getparam (__pid_t __pid, struct sched_param *__param) noexcept (true); 900171: 900171: 900171: extern int sched_setscheduler (__pid_t __pid, int __policy, 900171: const struct sched_param *__param) noexcept (true); 900171: 900171: 900171: extern int sched_getscheduler (__pid_t __pid) noexcept (true); 900171: 900171: 900171: extern int sched_yield (void) noexcept (true); 900171: 900171: 900171: extern int sched_get_priority_max (int __algorithm) noexcept (true); 900171: 900171: 900171: extern int sched_get_priority_min (int __algorithm) noexcept (true); 900171: 900171: 900171: 900171: extern int sched_rr_get_interval (__pid_t __pid, struct timespec *__t) noexcept (true); 900171: # 130 "/usr/aarch64-linux-gnu/include/sched.h" 3 900171: extern int sched_setaffinity (__pid_t __pid, size_t __cpusetsize, 900171: const cpu_set_t *__cpuset) noexcept (true); 900171: 900171: 900171: extern int sched_getaffinity (__pid_t __pid, size_t __cpusetsize, 900171: cpu_set_t *__cpuset) noexcept (true); 900171: 900171: 900171: } 900171: # 23 "/usr/aarch64-linux-gnu/include/pthread.h" 2 3 900171: # 1 "/usr/aarch64-linux-gnu/include/time.h" 1 3 900171: # 29 "/usr/aarch64-linux-gnu/include/time.h" 3 900171: # 1 "/usr/lib/gcc-cross/aarch64-linux-gnu/12/include/stddef.h" 1 3 4 900171: # 30 "/usr/aarch64-linux-gnu/include/time.h" 2 3 900171: 900171: 900171: 900171: # 1 "/usr/aarch64-linux-gnu/include/bits/time.h" 1 3 900171: # 73 "/usr/aarch64-linux-gnu/include/bits/time.h" 3 900171: # 1 "/usr/aarch64-linux-gnu/include/bits/timex.h" 1 3 900171: # 26 "/usr/aarch64-linux-gnu/include/bits/timex.h" 3 900171: struct timex 900171: { 900171: # 58 "/usr/aarch64-linux-gnu/include/bits/timex.h" 3 900171: unsigned int modes; 900171: __syscall_slong_t offset; 900171: __syscall_slong_t freq; 900171: __syscall_slong_t maxerror; 900171: __syscall_slong_t esterror; 900171: int status; 900171: __syscall_slong_t constant; 900171: __syscall_slong_t precision; 900171: __syscall_slong_t tolerance; 900171: struct timeval time; 900171: __syscall_slong_t tick; 900171: __syscall_slong_t ppsfreq; 900171: __syscall_slong_t jitter; 900171: int shift; 900171: __syscall_slong_t stabil; 900171: __syscall_slong_t jitcnt; 900171: __syscall_slong_t calcnt; 900171: __syscall_slong_t errcnt; 900171: __syscall_slong_t stbcnt; 900171: 900171: int tai; 900171: 900171: 900171: int :32; int :32; int :32; int :32; 900171: int :32; int :32; int :32; int :32; 900171: int :32; int :32; int :32; 900171: 900171: }; 900171: # 74 "/usr/aarch64-linux-gnu/include/bits/time.h" 2 3 900171: 900171: extern "C" { 900171: 900171: 900171: extern int clock_adjtime (__clockid_t __clock_id, struct timex *__utx) noexcept (true) __attribute__ ((__nonnull__ (2))); 900171: # 90 "/usr/aarch64-linux-gnu/include/bits/time.h" 3 900171: } 900171: # 34 "/usr/aarch64-linux-gnu/include/time.h" 2 3 900171: 900171: 900171: 900171: 900171: 900171: # 1 "/usr/aarch64-linux-gnu/include/bits/types/struct_tm.h" 1 3 900171: 900171: 900171: 900171: 900171: 900171: 900171: struct tm 900171: { 900171: int tm_sec; 900171: int tm_min; 900171: int tm_hour; 900171: int tm_mday; 900171: int tm_mon; 900171: int tm_year; 900171: int tm_wday; 900171: int tm_yday; 900171: int tm_isdst; 900171: 900171: 900171: long int tm_gmtoff; 900171: const char *tm_zone; 900171: 900171: 900171: 900171: 900171: }; 900171: # 40 "/usr/aarch64-linux-gnu/include/time.h" 2 3 900171: # 48 "/usr/aarch64-linux-gnu/include/time.h" 3 900171: # 1 "/usr/aarch64-linux-gnu/include/bits/types/struct_itimerspec.h" 1 3 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: struct itimerspec 900171: { 900171: struct timespec it_interval; 900171: struct timespec it_value; 900171: }; 900171: # 49 "/usr/aarch64-linux-gnu/include/time.h" 2 3 900171: struct sigevent; 900171: # 68 "/usr/aarch64-linux-gnu/include/time.h" 3 900171: extern "C" { 900171: 900171: 900171: 900171: extern clock_t clock (void) noexcept (true); 900171: 900171: 900171: 900171: extern time_t time (time_t *__timer) noexcept (true); 900171: 900171: 900171: extern double difftime (time_t __time1, time_t __time0) 900171: noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: extern time_t mktime (struct tm *__tp) noexcept (true); 900171: # 100 "/usr/aarch64-linux-gnu/include/time.h" 3 900171: extern size_t strftime (char *__restrict __s, size_t __maxsize, 900171: const char *__restrict __format, 900171: const struct tm *__restrict __tp) noexcept (true); 900171: 900171: 900171: 900171: 900171: extern char *strptime (const char *__restrict __s, 900171: const char *__restrict __fmt, struct tm *__tp) 900171: noexcept (true); 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern size_t strftime_l (char *__restrict __s, size_t __maxsize, 900171: const char *__restrict __format, 900171: const struct tm *__restrict __tp, 900171: locale_t __loc) noexcept (true); 900171: 900171: 900171: 900171: extern char *strptime_l (const char *__restrict __s, 900171: const char *__restrict __fmt, struct tm *__tp, 900171: locale_t __loc) noexcept (true); 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern struct tm *gmtime (const time_t *__timer) noexcept (true); 900171: 900171: 900171: 900171: extern struct tm *localtime (const time_t *__timer) noexcept (true); 900171: # 154 "/usr/aarch64-linux-gnu/include/time.h" 3 900171: extern struct tm *gmtime_r (const time_t *__restrict __timer, 900171: struct tm *__restrict __tp) noexcept (true); 900171: 900171: 900171: 900171: extern struct tm *localtime_r (const time_t *__restrict __timer, 900171: struct tm *__restrict __tp) noexcept (true); 900171: # 179 "/usr/aarch64-linux-gnu/include/time.h" 3 900171: extern char *asctime (const struct tm *__tp) noexcept (true); 900171: 900171: 900171: 900171: extern char *ctime (const time_t *__timer) noexcept (true); 900171: # 197 "/usr/aarch64-linux-gnu/include/time.h" 3 900171: extern char *asctime_r (const struct tm *__restrict __tp, 900171: char *__restrict __buf) noexcept (true); 900171: 900171: 900171: 900171: extern char *ctime_r (const time_t *__restrict __timer, 900171: char *__restrict __buf) noexcept (true); 900171: # 217 "/usr/aarch64-linux-gnu/include/time.h" 3 900171: extern char *__tzname[2]; 900171: extern int __daylight; 900171: extern long int __timezone; 900171: 900171: 900171: 900171: 900171: extern char *tzname[2]; 900171: 900171: 900171: 900171: extern void tzset (void) noexcept (true); 900171: 900171: 900171: 900171: extern int daylight; 900171: extern long int timezone; 900171: # 246 "/usr/aarch64-linux-gnu/include/time.h" 3 900171: extern time_t timegm (struct tm *__tp) noexcept (true); 900171: # 263 "/usr/aarch64-linux-gnu/include/time.h" 3 900171: extern time_t timelocal (struct tm *__tp) noexcept (true); 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern int dysize (int __year) noexcept (true) __attribute__ ((__const__)); 900171: # 281 "/usr/aarch64-linux-gnu/include/time.h" 3 900171: extern int nanosleep (const struct timespec *__requested_time, 900171: struct timespec *__remaining); 900171: 900171: 900171: extern int clock_getres (clockid_t __clock_id, struct timespec *__res) noexcept (true); 900171: 900171: 900171: extern int clock_gettime (clockid_t __clock_id, struct timespec *__tp) 900171: noexcept (true) __attribute__ ((__nonnull__ (2))); 900171: 900171: 900171: extern int clock_settime (clockid_t __clock_id, const struct timespec *__tp) 900171: noexcept (true) __attribute__ ((__nonnull__ (2))); 900171: # 323 "/usr/aarch64-linux-gnu/include/time.h" 3 900171: extern int clock_nanosleep (clockid_t __clock_id, int __flags, 900171: const struct timespec *__req, 900171: struct timespec *__rem); 900171: # 338 "/usr/aarch64-linux-gnu/include/time.h" 3 900171: extern int clock_getcpuclockid (pid_t __pid, clockid_t *__clock_id) noexcept (true); 900171: 900171: 900171: 900171: 900171: extern int timer_create (clockid_t __clock_id, 900171: struct sigevent *__restrict __evp, 900171: timer_t *__restrict __timerid) noexcept (true); 900171: 900171: 900171: extern int timer_delete (timer_t __timerid) noexcept (true); 900171: 900171: 900171: 900171: extern int timer_settime (timer_t __timerid, int __flags, 900171: const struct itimerspec *__restrict __value, 900171: struct itimerspec *__restrict __ovalue) noexcept (true); 900171: 900171: 900171: extern int timer_gettime (timer_t __timerid, struct itimerspec *__value) 900171: noexcept (true); 900171: # 376 "/usr/aarch64-linux-gnu/include/time.h" 3 900171: extern int timer_getoverrun (timer_t __timerid) noexcept (true); 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern int timespec_get (struct timespec *__ts, int __base) 900171: noexcept (true) __attribute__ ((__nonnull__ (1))); 900171: # 399 "/usr/aarch64-linux-gnu/include/time.h" 3 900171: extern int timespec_getres (struct timespec *__ts, int __base) 900171: noexcept (true); 900171: # 425 "/usr/aarch64-linux-gnu/include/time.h" 3 900171: extern int getdate_err; 900171: # 434 "/usr/aarch64-linux-gnu/include/time.h" 3 900171: extern struct tm *getdate (const char *__string); 900171: # 448 "/usr/aarch64-linux-gnu/include/time.h" 3 900171: extern int getdate_r (const char *__restrict __string, 900171: struct tm *__restrict __resbufp); 900171: 900171: 900171: } 900171: # 24 "/usr/aarch64-linux-gnu/include/pthread.h" 2 3 900171: 900171: 900171: 900171: # 1 "/usr/aarch64-linux-gnu/include/bits/setjmp.h" 1 3 900171: # 30 "/usr/aarch64-linux-gnu/include/bits/setjmp.h" 3 900171: __extension__ typedef unsigned long long __jmp_buf [22]; 900171: # 28 "/usr/aarch64-linux-gnu/include/pthread.h" 2 3 900171: # 1 "/usr/aarch64-linux-gnu/include/bits/wordsize.h" 1 3 900171: # 29 "/usr/aarch64-linux-gnu/include/pthread.h" 2 3 900171: 900171: 900171: # 1 "/usr/aarch64-linux-gnu/include/bits/types/struct___jmp_buf_tag.h" 1 3 900171: # 26 "/usr/aarch64-linux-gnu/include/bits/types/struct___jmp_buf_tag.h" 3 900171: struct __jmp_buf_tag 900171: { 900171: 900171: 900171: 900171: 900171: __jmp_buf __jmpbuf; 900171: int __mask_was_saved; 900171: __sigset_t __saved_mask; 900171: }; 900171: # 32 "/usr/aarch64-linux-gnu/include/pthread.h" 2 3 900171: 900171: # 1 "/usr/aarch64-linux-gnu/include/bits/pthread_stack_min-dynamic.h" 1 3 900171: # 23 "/usr/aarch64-linux-gnu/include/bits/pthread_stack_min-dynamic.h" 3 900171: extern "C" { 900171: extern long int __sysconf (int __name) noexcept (true); 900171: } 900171: # 34 "/usr/aarch64-linux-gnu/include/pthread.h" 2 3 900171: 900171: 900171: 900171: enum 900171: { 900171: PTHREAD_CREATE_JOINABLE, 900171: 900171: PTHREAD_CREATE_DETACHED 900171: 900171: }; 900171: 900171: 900171: 900171: enum 900171: { 900171: PTHREAD_MUTEX_TIMED_NP, 900171: PTHREAD_MUTEX_RECURSIVE_NP, 900171: PTHREAD_MUTEX_ERRORCHECK_NP, 900171: PTHREAD_MUTEX_ADAPTIVE_NP 900171: 900171: , 900171: PTHREAD_MUTEX_NORMAL = PTHREAD_MUTEX_TIMED_NP, 900171: PTHREAD_MUTEX_RECURSIVE = PTHREAD_MUTEX_RECURSIVE_NP, 900171: PTHREAD_MUTEX_ERRORCHECK = PTHREAD_MUTEX_ERRORCHECK_NP, 900171: PTHREAD_MUTEX_DEFAULT = PTHREAD_MUTEX_NORMAL 900171: 900171: 900171: 900171: , PTHREAD_MUTEX_FAST_NP = PTHREAD_MUTEX_TIMED_NP 900171: 900171: }; 900171: 900171: 900171: 900171: 900171: enum 900171: { 900171: PTHREAD_MUTEX_STALLED, 900171: PTHREAD_MUTEX_STALLED_NP = PTHREAD_MUTEX_STALLED, 900171: PTHREAD_MUTEX_ROBUST, 900171: PTHREAD_MUTEX_ROBUST_NP = PTHREAD_MUTEX_ROBUST 900171: }; 900171: 900171: 900171: 900171: 900171: 900171: enum 900171: { 900171: PTHREAD_PRIO_NONE, 900171: PTHREAD_PRIO_INHERIT, 900171: PTHREAD_PRIO_PROTECT 900171: }; 900171: # 104 "/usr/aarch64-linux-gnu/include/pthread.h" 3 900171: enum 900171: { 900171: PTHREAD_RWLOCK_PREFER_READER_NP, 900171: PTHREAD_RWLOCK_PREFER_WRITER_NP, 900171: PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP, 900171: PTHREAD_RWLOCK_DEFAULT_NP = PTHREAD_RWLOCK_PREFER_READER_NP 900171: }; 900171: # 124 "/usr/aarch64-linux-gnu/include/pthread.h" 3 900171: enum 900171: { 900171: PTHREAD_INHERIT_SCHED, 900171: 900171: PTHREAD_EXPLICIT_SCHED 900171: 900171: }; 900171: 900171: 900171: 900171: enum 900171: { 900171: PTHREAD_SCOPE_SYSTEM, 900171: 900171: PTHREAD_SCOPE_PROCESS 900171: 900171: }; 900171: 900171: 900171: 900171: enum 900171: { 900171: PTHREAD_PROCESS_PRIVATE, 900171: 900171: PTHREAD_PROCESS_SHARED 900171: 900171: }; 900171: # 159 "/usr/aarch64-linux-gnu/include/pthread.h" 3 900171: struct _pthread_cleanup_buffer 900171: { 900171: void (*__routine) (void *); 900171: void *__arg; 900171: int __canceltype; 900171: struct _pthread_cleanup_buffer *__prev; 900171: }; 900171: 900171: 900171: enum 900171: { 900171: PTHREAD_CANCEL_ENABLE, 900171: 900171: PTHREAD_CANCEL_DISABLE 900171: 900171: }; 900171: enum 900171: { 900171: PTHREAD_CANCEL_DEFERRED, 900171: 900171: PTHREAD_CANCEL_ASYNCHRONOUS 900171: 900171: }; 900171: # 197 "/usr/aarch64-linux-gnu/include/pthread.h" 3 900171: extern "C" { 900171: 900171: 900171: 900171: 900171: extern int pthread_create (pthread_t *__restrict __newthread, 900171: const pthread_attr_t *__restrict __attr, 900171: void *(*__start_routine) (void *), 900171: void *__restrict __arg) noexcept (true) __attribute__ ((__nonnull__ (1, 3))); 900171: 900171: 900171: 900171: 900171: 900171: extern void pthread_exit (void *__retval) __attribute__ ((__noreturn__)); 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern int pthread_join (pthread_t __th, void **__thread_return); 900171: 900171: 900171: 900171: 900171: extern int pthread_tryjoin_np (pthread_t __th, void **__thread_return) noexcept (true); 900171: # 233 "/usr/aarch64-linux-gnu/include/pthread.h" 3 900171: extern int pthread_timedjoin_np (pthread_t __th, void **__thread_return, 900171: const struct timespec *__abstime); 900171: # 243 "/usr/aarch64-linux-gnu/include/pthread.h" 3 900171: extern int pthread_clockjoin_np (pthread_t __th, void **__thread_return, 900171: clockid_t __clockid, 900171: const struct timespec *__abstime); 900171: # 269 "/usr/aarch64-linux-gnu/include/pthread.h" 3 900171: extern int pthread_detach (pthread_t __th) noexcept (true); 900171: 900171: 900171: 900171: extern pthread_t pthread_self (void) noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: extern int pthread_equal (pthread_t __thread1, pthread_t __thread2) 900171: noexcept (true) __attribute__ ((__const__)); 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern int pthread_attr_init (pthread_attr_t *__attr) noexcept (true) __attribute__ ((__nonnull__ (1))); 900171: 900171: 900171: extern int pthread_attr_destroy (pthread_attr_t *__attr) 900171: noexcept (true) __attribute__ ((__nonnull__ (1))); 900171: 900171: 900171: extern int pthread_attr_getdetachstate (const pthread_attr_t *__attr, 900171: int *__detachstate) 900171: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 900171: 900171: 900171: extern int pthread_attr_setdetachstate (pthread_attr_t *__attr, 900171: int __detachstate) 900171: noexcept (true) __attribute__ ((__nonnull__ (1))); 900171: 900171: 900171: 900171: extern int pthread_attr_getguardsize (const pthread_attr_t *__attr, 900171: size_t *__guardsize) 900171: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 900171: 900171: 900171: extern int pthread_attr_setguardsize (pthread_attr_t *__attr, 900171: size_t __guardsize) 900171: noexcept (true) __attribute__ ((__nonnull__ (1))); 900171: 900171: 900171: 900171: extern int pthread_attr_getschedparam (const pthread_attr_t *__restrict __attr, 900171: struct sched_param *__restrict __param) 900171: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 900171: 900171: 900171: extern int pthread_attr_setschedparam (pthread_attr_t *__restrict __attr, 900171: const struct sched_param *__restrict 900171: __param) noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 900171: 900171: 900171: extern int pthread_attr_getschedpolicy (const pthread_attr_t *__restrict 900171: __attr, int *__restrict __policy) 900171: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 900171: 900171: 900171: extern int pthread_attr_setschedpolicy (pthread_attr_t *__attr, int __policy) 900171: noexcept (true) __attribute__ ((__nonnull__ (1))); 900171: 900171: 900171: extern int pthread_attr_getinheritsched (const pthread_attr_t *__restrict 900171: __attr, int *__restrict __inherit) 900171: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 900171: 900171: 900171: extern int pthread_attr_setinheritsched (pthread_attr_t *__attr, 900171: int __inherit) 900171: noexcept (true) __attribute__ ((__nonnull__ (1))); 900171: 900171: 900171: 900171: extern int pthread_attr_getscope (const pthread_attr_t *__restrict __attr, 900171: int *__restrict __scope) 900171: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 900171: 900171: 900171: extern int pthread_attr_setscope (pthread_attr_t *__attr, int __scope) 900171: noexcept (true) __attribute__ ((__nonnull__ (1))); 900171: 900171: 900171: extern int pthread_attr_getstackaddr (const pthread_attr_t *__restrict 900171: __attr, void **__restrict __stackaddr) 900171: noexcept (true) __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__deprecated__)); 900171: 900171: 900171: 900171: 900171: 900171: extern int pthread_attr_setstackaddr (pthread_attr_t *__attr, 900171: void *__stackaddr) 900171: noexcept (true) __attribute__ ((__nonnull__ (1))) __attribute__ ((__deprecated__)); 900171: 900171: 900171: extern int pthread_attr_getstacksize (const pthread_attr_t *__restrict 900171: __attr, size_t *__restrict __stacksize) 900171: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 900171: 900171: 900171: 900171: 900171: extern int pthread_attr_setstacksize (pthread_attr_t *__attr, 900171: size_t __stacksize) 900171: noexcept (true) __attribute__ ((__nonnull__ (1))); 900171: 900171: 900171: 900171: extern int pthread_attr_getstack (const pthread_attr_t *__restrict __attr, 900171: void **__restrict __stackaddr, 900171: size_t *__restrict __stacksize) 900171: noexcept (true) __attribute__ ((__nonnull__ (1, 2, 3))); 900171: 900171: 900171: 900171: 900171: extern int pthread_attr_setstack (pthread_attr_t *__attr, void *__stackaddr, 900171: size_t __stacksize) noexcept (true) __attribute__ ((__nonnull__ (1))); 900171: 900171: 900171: 900171: 900171: 900171: extern int pthread_attr_setaffinity_np (pthread_attr_t *__attr, 900171: size_t __cpusetsize, 900171: const cpu_set_t *__cpuset) 900171: noexcept (true) __attribute__ ((__nonnull__ (1, 3))); 900171: 900171: 900171: 900171: extern int pthread_attr_getaffinity_np (const pthread_attr_t *__attr, 900171: size_t __cpusetsize, 900171: cpu_set_t *__cpuset) 900171: noexcept (true) __attribute__ ((__nonnull__ (1, 3))); 900171: 900171: 900171: extern int pthread_getattr_default_np (pthread_attr_t *__attr) 900171: noexcept (true) __attribute__ ((__nonnull__ (1))); 900171: 900171: 900171: extern int pthread_attr_setsigmask_np (pthread_attr_t *__attr, 900171: const __sigset_t *sigmask); 900171: 900171: 900171: 900171: 900171: extern int pthread_attr_getsigmask_np (const pthread_attr_t *__attr, 900171: __sigset_t *sigmask); 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern int pthread_setattr_default_np (const pthread_attr_t *__attr) 900171: noexcept (true) __attribute__ ((__nonnull__ (1))); 900171: 900171: 900171: 900171: 900171: extern int pthread_getattr_np (pthread_t __th, pthread_attr_t *__attr) 900171: noexcept (true) __attribute__ ((__nonnull__ (2))); 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern int pthread_setschedparam (pthread_t __target_thread, int __policy, 900171: const struct sched_param *__param) 900171: noexcept (true) __attribute__ ((__nonnull__ (3))); 900171: 900171: 900171: extern int pthread_getschedparam (pthread_t __target_thread, 900171: int *__restrict __policy, 900171: struct sched_param *__restrict __param) 900171: noexcept (true) __attribute__ ((__nonnull__ (2, 3))); 900171: 900171: 900171: extern int pthread_setschedprio (pthread_t __target_thread, int __prio) 900171: noexcept (true); 900171: 900171: 900171: 900171: 900171: extern int pthread_getname_np (pthread_t __target_thread, char *__buf, 900171: size_t __buflen) 900171: noexcept (true) __attribute__ ((__nonnull__ (2))); 900171: 900171: 900171: extern int pthread_setname_np (pthread_t __target_thread, const char *__name) 900171: noexcept (true) __attribute__ ((__nonnull__ (2))); 900171: 900171: 900171: 900171: 900171: 900171: extern int pthread_getconcurrency (void) noexcept (true); 900171: 900171: 900171: extern int pthread_setconcurrency (int __level) noexcept (true); 900171: 900171: 900171: 900171: extern int pthread_yield (void) noexcept (true); 900171: 900171: extern int pthread_yield (void) noexcept (true) __asm__ ("" "sched_yield") 900171: __attribute__ ((__deprecated__ ("pthread_yield is deprecated, use sched_yield instead"))) 900171: ; 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern int pthread_setaffinity_np (pthread_t __th, size_t __cpusetsize, 900171: const cpu_set_t *__cpuset) 900171: noexcept (true) __attribute__ ((__nonnull__ (3))); 900171: 900171: 900171: extern int pthread_getaffinity_np (pthread_t __th, size_t __cpusetsize, 900171: cpu_set_t *__cpuset) 900171: noexcept (true) __attribute__ ((__nonnull__ (3))); 900171: # 509 "/usr/aarch64-linux-gnu/include/pthread.h" 3 900171: extern int pthread_once (pthread_once_t *__once_control, 900171: void (*__init_routine) (void)) __attribute__ ((__nonnull__ (1, 2))); 900171: # 521 "/usr/aarch64-linux-gnu/include/pthread.h" 3 900171: extern int pthread_setcancelstate (int __state, int *__oldstate); 900171: 900171: 900171: 900171: extern int pthread_setcanceltype (int __type, int *__oldtype); 900171: 900171: 900171: extern int pthread_cancel (pthread_t __th); 900171: 900171: 900171: 900171: 900171: extern void pthread_testcancel (void); 900171: 900171: 900171: 900171: 900171: struct __cancel_jmp_buf_tag 900171: { 900171: __jmp_buf __cancel_jmp_buf; 900171: int __mask_was_saved; 900171: }; 900171: 900171: typedef struct 900171: { 900171: struct __cancel_jmp_buf_tag __cancel_jmp_buf[1]; 900171: void *__pad[4]; 900171: } __pthread_unwind_buf_t __attribute__ ((__aligned__)); 900171: # 557 "/usr/aarch64-linux-gnu/include/pthread.h" 3 900171: struct __pthread_cleanup_frame 900171: { 900171: void (*__cancel_routine) (void *); 900171: void *__cancel_arg; 900171: int __do_it; 900171: int __cancel_type; 900171: }; 900171: 900171: 900171: 900171: 900171: class __pthread_cleanup_class 900171: { 900171: void (*__cancel_routine) (void *); 900171: void *__cancel_arg; 900171: int __do_it; 900171: int __cancel_type; 900171: 900171: public: 900171: __pthread_cleanup_class (void (*__fct) (void *), void *__arg) 900171: : __cancel_routine (__fct), __cancel_arg (__arg), __do_it (1) { } 900171: ~__pthread_cleanup_class () { if (__do_it) __cancel_routine (__cancel_arg); } 900171: void __setdoit (int __newval) { __do_it = __newval; } 900171: void __defer () { pthread_setcanceltype (PTHREAD_CANCEL_DEFERRED, 900171: &__cancel_type); } 900171: void __restore () const { pthread_setcanceltype (__cancel_type, 0); } 900171: }; 900171: # 766 "/usr/aarch64-linux-gnu/include/pthread.h" 3 900171: extern int __sigsetjmp_cancel (struct __cancel_jmp_buf_tag __env[1], int __savemask) noexcept (true) __asm__ ("" "__sigsetjmp") 900171: 900171: 900171: __attribute__ ((__returns_twice__)); 900171: # 781 "/usr/aarch64-linux-gnu/include/pthread.h" 3 900171: extern int pthread_mutex_init (pthread_mutex_t *__mutex, 900171: const pthread_mutexattr_t *__mutexattr) 900171: noexcept (true) __attribute__ ((__nonnull__ (1))); 900171: 900171: 900171: extern int pthread_mutex_destroy (pthread_mutex_t *__mutex) 900171: noexcept (true) __attribute__ ((__nonnull__ (1))); 900171: 900171: 900171: extern int pthread_mutex_trylock (pthread_mutex_t *__mutex) 900171: noexcept (true) __attribute__ ((__nonnull__ (1))); 900171: 900171: 900171: extern int pthread_mutex_lock (pthread_mutex_t *__mutex) 900171: noexcept (true) __attribute__ ((__nonnull__ (1))); 900171: 900171: 900171: 900171: 900171: extern int pthread_mutex_timedlock (pthread_mutex_t *__restrict __mutex, 900171: const struct timespec *__restrict 900171: __abstime) noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 900171: # 817 "/usr/aarch64-linux-gnu/include/pthread.h" 3 900171: extern int pthread_mutex_clocklock (pthread_mutex_t *__restrict __mutex, 900171: clockid_t __clockid, 900171: const struct timespec *__restrict 900171: __abstime) noexcept (true) __attribute__ ((__nonnull__ (1, 3))); 900171: # 835 "/usr/aarch64-linux-gnu/include/pthread.h" 3 900171: extern int pthread_mutex_unlock (pthread_mutex_t *__mutex) 900171: noexcept (true) __attribute__ ((__nonnull__ (1))); 900171: 900171: 900171: 900171: extern int pthread_mutex_getprioceiling (const pthread_mutex_t * 900171: __restrict __mutex, 900171: int *__restrict __prioceiling) 900171: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 900171: 900171: 900171: 900171: extern int pthread_mutex_setprioceiling (pthread_mutex_t *__restrict __mutex, 900171: int __prioceiling, 900171: int *__restrict __old_ceiling) 900171: noexcept (true) __attribute__ ((__nonnull__ (1, 3))); 900171: 900171: 900171: 900171: 900171: extern int pthread_mutex_consistent (pthread_mutex_t *__mutex) 900171: noexcept (true) __attribute__ ((__nonnull__ (1))); 900171: 900171: 900171: extern int pthread_mutex_consistent_np (pthread_mutex_t *) noexcept (true) __asm__ ("" "pthread_mutex_consistent") 900171: __attribute__ ((__nonnull__ (1))) 900171: __attribute__ ((__deprecated__ ("pthread_mutex_consistent_np is deprecated, use pthread_mutex_consistent"))) 900171: ; 900171: # 874 "/usr/aarch64-linux-gnu/include/pthread.h" 3 900171: extern int pthread_mutexattr_init (pthread_mutexattr_t *__attr) 900171: noexcept (true) __attribute__ ((__nonnull__ (1))); 900171: 900171: 900171: extern int pthread_mutexattr_destroy (pthread_mutexattr_t *__attr) 900171: noexcept (true) __attribute__ ((__nonnull__ (1))); 900171: 900171: 900171: extern int pthread_mutexattr_getpshared (const pthread_mutexattr_t * 900171: __restrict __attr, 900171: int *__restrict __pshared) 900171: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 900171: 900171: 900171: extern int pthread_mutexattr_setpshared (pthread_mutexattr_t *__attr, 900171: int __pshared) 900171: noexcept (true) __attribute__ ((__nonnull__ (1))); 900171: 900171: 900171: 900171: extern int pthread_mutexattr_gettype (const pthread_mutexattr_t *__restrict 900171: __attr, int *__restrict __kind) 900171: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 900171: 900171: 900171: 900171: 900171: extern int pthread_mutexattr_settype (pthread_mutexattr_t *__attr, int __kind) 900171: noexcept (true) __attribute__ ((__nonnull__ (1))); 900171: 900171: 900171: 900171: extern int pthread_mutexattr_getprotocol (const pthread_mutexattr_t * 900171: __restrict __attr, 900171: int *__restrict __protocol) 900171: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 900171: 900171: 900171: 900171: extern int pthread_mutexattr_setprotocol (pthread_mutexattr_t *__attr, 900171: int __protocol) 900171: noexcept (true) __attribute__ ((__nonnull__ (1))); 900171: 900171: 900171: extern int pthread_mutexattr_getprioceiling (const pthread_mutexattr_t * 900171: __restrict __attr, 900171: int *__restrict __prioceiling) 900171: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 900171: 900171: 900171: extern int pthread_mutexattr_setprioceiling (pthread_mutexattr_t *__attr, 900171: int __prioceiling) 900171: noexcept (true) __attribute__ ((__nonnull__ (1))); 900171: 900171: 900171: 900171: extern int pthread_mutexattr_getrobust (const pthread_mutexattr_t *__attr, 900171: int *__robustness) 900171: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 900171: 900171: 900171: extern int pthread_mutexattr_getrobust_np (pthread_mutexattr_t *, int *) noexcept (true) __asm__ ("" "pthread_mutexattr_getrobust") 900171: 900171: __attribute__ ((__nonnull__ (1))) 900171: __attribute__ ((__deprecated__ ("pthread_mutexattr_getrobust_np is deprecated, use pthread_mutexattr_getrobust"))) 900171: ; 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern int pthread_mutexattr_setrobust (pthread_mutexattr_t *__attr, 900171: int __robustness) 900171: noexcept (true) __attribute__ ((__nonnull__ (1))); 900171: 900171: 900171: extern int pthread_mutexattr_setrobust_np (pthread_mutexattr_t *, int) noexcept (true) __asm__ ("" "pthread_mutexattr_setrobust") 900171: 900171: __attribute__ ((__nonnull__ (1))) 900171: __attribute__ ((__deprecated__ ("pthread_mutexattr_setrobust_np is deprecated, use pthread_mutexattr_setrobust"))) 900171: ; 900171: # 967 "/usr/aarch64-linux-gnu/include/pthread.h" 3 900171: extern int pthread_rwlock_init (pthread_rwlock_t *__restrict __rwlock, 900171: const pthread_rwlockattr_t *__restrict 900171: __attr) noexcept (true) __attribute__ ((__nonnull__ (1))); 900171: 900171: 900171: extern int pthread_rwlock_destroy (pthread_rwlock_t *__rwlock) 900171: noexcept (true) __attribute__ ((__nonnull__ (1))); 900171: 900171: 900171: extern int pthread_rwlock_rdlock (pthread_rwlock_t *__rwlock) 900171: noexcept (true) __attribute__ ((__nonnull__ (1))); 900171: 900171: 900171: extern int pthread_rwlock_tryrdlock (pthread_rwlock_t *__rwlock) 900171: noexcept (true) __attribute__ ((__nonnull__ (1))); 900171: 900171: 900171: 900171: 900171: extern int pthread_rwlock_timedrdlock (pthread_rwlock_t *__restrict __rwlock, 900171: const struct timespec *__restrict 900171: __abstime) noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 900171: # 1004 "/usr/aarch64-linux-gnu/include/pthread.h" 3 900171: extern int pthread_rwlock_clockrdlock (pthread_rwlock_t *__restrict __rwlock, 900171: clockid_t __clockid, 900171: const struct timespec *__restrict 900171: __abstime) noexcept (true) __attribute__ ((__nonnull__ (1, 3))); 900171: # 1023 "/usr/aarch64-linux-gnu/include/pthread.h" 3 900171: extern int pthread_rwlock_wrlock (pthread_rwlock_t *__rwlock) 900171: noexcept (true) __attribute__ ((__nonnull__ (1))); 900171: 900171: 900171: extern int pthread_rwlock_trywrlock (pthread_rwlock_t *__rwlock) 900171: noexcept (true) __attribute__ ((__nonnull__ (1))); 900171: 900171: 900171: 900171: 900171: extern int pthread_rwlock_timedwrlock (pthread_rwlock_t *__restrict __rwlock, 900171: const struct timespec *__restrict 900171: __abstime) noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 900171: # 1051 "/usr/aarch64-linux-gnu/include/pthread.h" 3 900171: extern int pthread_rwlock_clockwrlock (pthread_rwlock_t *__restrict __rwlock, 900171: clockid_t __clockid, 900171: const struct timespec *__restrict 900171: __abstime) noexcept (true) __attribute__ ((__nonnull__ (1, 3))); 900171: # 1071 "/usr/aarch64-linux-gnu/include/pthread.h" 3 900171: extern int pthread_rwlock_unlock (pthread_rwlock_t *__rwlock) 900171: noexcept (true) __attribute__ ((__nonnull__ (1))); 900171: 900171: 900171: 900171: 900171: 900171: extern int pthread_rwlockattr_init (pthread_rwlockattr_t *__attr) 900171: noexcept (true) __attribute__ ((__nonnull__ (1))); 900171: 900171: 900171: extern int pthread_rwlockattr_destroy (pthread_rwlockattr_t *__attr) 900171: noexcept (true) __attribute__ ((__nonnull__ (1))); 900171: 900171: 900171: extern int pthread_rwlockattr_getpshared (const pthread_rwlockattr_t * 900171: __restrict __attr, 900171: int *__restrict __pshared) 900171: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 900171: 900171: 900171: extern int pthread_rwlockattr_setpshared (pthread_rwlockattr_t *__attr, 900171: int __pshared) 900171: noexcept (true) __attribute__ ((__nonnull__ (1))); 900171: 900171: 900171: extern int pthread_rwlockattr_getkind_np (const pthread_rwlockattr_t * 900171: __restrict __attr, 900171: int *__restrict __pref) 900171: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 900171: 900171: 900171: extern int pthread_rwlockattr_setkind_np (pthread_rwlockattr_t *__attr, 900171: int __pref) noexcept (true) __attribute__ ((__nonnull__ (1))); 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern int pthread_cond_init (pthread_cond_t *__restrict __cond, 900171: const pthread_condattr_t *__restrict __cond_attr) 900171: noexcept (true) __attribute__ ((__nonnull__ (1))); 900171: 900171: 900171: extern int pthread_cond_destroy (pthread_cond_t *__cond) 900171: noexcept (true) __attribute__ ((__nonnull__ (1))); 900171: 900171: 900171: extern int pthread_cond_signal (pthread_cond_t *__cond) 900171: noexcept (true) __attribute__ ((__nonnull__ (1))); 900171: 900171: 900171: extern int pthread_cond_broadcast (pthread_cond_t *__cond) 900171: noexcept (true) __attribute__ ((__nonnull__ (1))); 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern int pthread_cond_wait (pthread_cond_t *__restrict __cond, 900171: pthread_mutex_t *__restrict __mutex) 900171: __attribute__ ((__nonnull__ (1, 2))); 900171: # 1145 "/usr/aarch64-linux-gnu/include/pthread.h" 3 900171: extern int pthread_cond_timedwait (pthread_cond_t *__restrict __cond, 900171: pthread_mutex_t *__restrict __mutex, 900171: const struct timespec *__restrict __abstime) 900171: __attribute__ ((__nonnull__ (1, 2, 3))); 900171: # 1171 "/usr/aarch64-linux-gnu/include/pthread.h" 3 900171: extern int pthread_cond_clockwait (pthread_cond_t *__restrict __cond, 900171: pthread_mutex_t *__restrict __mutex, 900171: __clockid_t __clock_id, 900171: const struct timespec *__restrict __abstime) 900171: __attribute__ ((__nonnull__ (1, 2, 4))); 900171: # 1194 "/usr/aarch64-linux-gnu/include/pthread.h" 3 900171: extern int pthread_condattr_init (pthread_condattr_t *__attr) 900171: noexcept (true) __attribute__ ((__nonnull__ (1))); 900171: 900171: 900171: extern int pthread_condattr_destroy (pthread_condattr_t *__attr) 900171: noexcept (true) __attribute__ ((__nonnull__ (1))); 900171: 900171: 900171: extern int pthread_condattr_getpshared (const pthread_condattr_t * 900171: __restrict __attr, 900171: int *__restrict __pshared) 900171: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 900171: 900171: 900171: extern int pthread_condattr_setpshared (pthread_condattr_t *__attr, 900171: int __pshared) noexcept (true) __attribute__ ((__nonnull__ (1))); 900171: 900171: 900171: 900171: extern int pthread_condattr_getclock (const pthread_condattr_t * 900171: __restrict __attr, 900171: __clockid_t *__restrict __clock_id) 900171: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 900171: 900171: 900171: extern int pthread_condattr_setclock (pthread_condattr_t *__attr, 900171: __clockid_t __clock_id) 900171: noexcept (true) __attribute__ ((__nonnull__ (1))); 900171: # 1230 "/usr/aarch64-linux-gnu/include/pthread.h" 3 900171: extern int pthread_spin_init (pthread_spinlock_t *__lock, int __pshared) 900171: noexcept (true) __attribute__ ((__nonnull__ (1))); 900171: 900171: 900171: extern int pthread_spin_destroy (pthread_spinlock_t *__lock) 900171: noexcept (true) __attribute__ ((__nonnull__ (1))); 900171: 900171: 900171: extern int pthread_spin_lock (pthread_spinlock_t *__lock) 900171: noexcept (true) __attribute__ ((__nonnull__ (1))); 900171: 900171: 900171: extern int pthread_spin_trylock (pthread_spinlock_t *__lock) 900171: noexcept (true) __attribute__ ((__nonnull__ (1))); 900171: 900171: 900171: extern int pthread_spin_unlock (pthread_spinlock_t *__lock) 900171: noexcept (true) __attribute__ ((__nonnull__ (1))); 900171: 900171: 900171: 900171: 900171: 900171: 900171: extern int pthread_barrier_init (pthread_barrier_t *__restrict __barrier, 900171: const pthread_barrierattr_t *__restrict 900171: __attr, unsigned int __count) 900171: noexcept (true) __attribute__ ((__nonnull__ (1))); 900171: 900171: 900171: extern int pthread_barrier_destroy (pthread_barrier_t *__barrier) 900171: noexcept (true) __attribute__ ((__nonnull__ (1))); 900171: 900171: 900171: extern int pthread_barrier_wait (pthread_barrier_t *__barrier) 900171: noexcept (true) __attribute__ ((__nonnull__ (1))); 900171: 900171: 900171: 900171: extern int pthread_barrierattr_init (pthread_barrierattr_t *__attr) 900171: noexcept (true) __attribute__ ((__nonnull__ (1))); 900171: 900171: 900171: extern int pthread_barrierattr_destroy (pthread_barrierattr_t *__attr) 900171: noexcept (true) __attribute__ ((__nonnull__ (1))); 900171: 900171: 900171: extern int pthread_barrierattr_getpshared (const pthread_barrierattr_t * 900171: __restrict __attr, 900171: int *__restrict __pshared) 900171: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 900171: 900171: 900171: extern int pthread_barrierattr_setpshared (pthread_barrierattr_t *__attr, 900171: int __pshared) 900171: noexcept (true) __attribute__ ((__nonnull__ (1))); 900171: # 1297 "/usr/aarch64-linux-gnu/include/pthread.h" 3 900171: extern int pthread_key_create (pthread_key_t *__key, 900171: void (*__destr_function) (void *)) 900171: noexcept (true) __attribute__ ((__nonnull__ (1))); 900171: 900171: 900171: extern int pthread_key_delete (pthread_key_t __key) noexcept (true); 900171: 900171: 900171: extern void *pthread_getspecific (pthread_key_t __key) noexcept (true); 900171: 900171: 900171: extern int pthread_setspecific (pthread_key_t __key, 900171: const void *__pointer) 900171: noexcept (true) __attribute__ ((__access__ (__none__, 2))); 900171: 900171: 900171: 900171: 900171: extern int pthread_getcpuclockid (pthread_t __thread_id, 900171: __clockid_t *__clock_id) 900171: noexcept (true) __attribute__ ((__nonnull__ (2))); 900171: # 1332 "/usr/aarch64-linux-gnu/include/pthread.h" 3 900171: extern int pthread_atfork (void (*__prepare) (void), 900171: void (*__parent) (void), 900171: void (*__child) (void)) noexcept (true); 900171: 900171: 900171: 900171: 900171: extern __inline __attribute__ ((__gnu_inline__)) int 900171: __attribute__ ((__leaf__)) pthread_equal (pthread_t __thread1, pthread_t __thread2) noexcept (true) 900171: { 900171: return __thread1 == __thread2; 900171: } 900171: 900171: 900171: } 900171: # 36 "/usr/aarch64-linux-gnu/include/c++/12/aarch64-linux-gnu/bits/gthr-default.h" 2 3 900171: # 47 "/usr/aarch64-linux-gnu/include/c++/12/aarch64-linux-gnu/bits/gthr-default.h" 3 900171: typedef pthread_t __gthread_t; 900171: typedef pthread_key_t __gthread_key_t; 900171: typedef pthread_once_t __gthread_once_t; 900171: typedef pthread_mutex_t __gthread_mutex_t; 900171: typedef pthread_mutex_t __gthread_recursive_mutex_t; 900171: typedef pthread_cond_t __gthread_cond_t; 900171: typedef struct timespec __gthread_time_t; 900171: # 102 "/usr/aarch64-linux-gnu/include/c++/12/aarch64-linux-gnu/bits/gthr-default.h" 3 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: # 299 "/usr/aarch64-linux-gnu/include/c++/12/aarch64-linux-gnu/bits/gthr-default.h" 3 900171: static inline int 900171: __gthread_active_p (void) 900171: { 900171: return 1; 900171: } 900171: # 659 "/usr/aarch64-linux-gnu/include/c++/12/aarch64-linux-gnu/bits/gthr-default.h" 3 900171: static inline int 900171: __gthread_create (__gthread_t *__threadid, void *(*__func) (void*), 900171: void *__args) 900171: { 900171: return pthread_create (__threadid, __null, __func, __args); 900171: } 900171: 900171: static inline int 900171: __gthread_join (__gthread_t __threadid, void **__value_ptr) 900171: { 900171: return pthread_join (__threadid, __value_ptr); 900171: } 900171: 900171: static inline int 900171: __gthread_detach (__gthread_t __threadid) 900171: { 900171: return pthread_detach (__threadid); 900171: } 900171: 900171: static inline int 900171: __gthread_equal (__gthread_t __t1, __gthread_t __t2) 900171: { 900171: return pthread_equal (__t1, __t2); 900171: } 900171: 900171: static inline __gthread_t 900171: __gthread_self (void) 900171: { 900171: return pthread_self (); 900171: } 900171: 900171: static inline int 900171: __gthread_yield (void) 900171: { 900171: return sched_yield (); 900171: } 900171: 900171: static inline int 900171: __gthread_once (__gthread_once_t *__once, void (*__func) (void)) 900171: { 900171: if (__gthread_active_p ()) 900171: return pthread_once (__once, __func); 900171: else 900171: return -1; 900171: } 900171: 900171: static inline int 900171: __gthread_key_create (__gthread_key_t *__key, void (*__dtor) (void *)) 900171: { 900171: return pthread_key_create (__key, __dtor); 900171: } 900171: 900171: static inline int 900171: __gthread_key_delete (__gthread_key_t __key) 900171: { 900171: return pthread_key_delete (__key); 900171: } 900171: 900171: static inline void * 900171: __gthread_getspecific (__gthread_key_t __key) 900171: { 900171: return pthread_getspecific (__key); 900171: } 900171: 900171: static inline int 900171: __gthread_setspecific (__gthread_key_t __key, const void *__ptr) 900171: { 900171: return pthread_setspecific (__key, __ptr); 900171: } 900171: 900171: static inline void 900171: __gthread_mutex_init_function (__gthread_mutex_t *__mutex) 900171: { 900171: if (__gthread_active_p ()) 900171: pthread_mutex_init (__mutex, __null); 900171: } 900171: 900171: static inline int 900171: __gthread_mutex_destroy (__gthread_mutex_t *__mutex) 900171: { 900171: if (__gthread_active_p ()) 900171: return pthread_mutex_destroy (__mutex); 900171: else 900171: return 0; 900171: } 900171: 900171: static inline int 900171: __gthread_mutex_lock (__gthread_mutex_t *__mutex) 900171: { 900171: if (__gthread_active_p ()) 900171: return pthread_mutex_lock (__mutex); 900171: else 900171: return 0; 900171: } 900171: 900171: static inline int 900171: __gthread_mutex_trylock (__gthread_mutex_t *__mutex) 900171: { 900171: if (__gthread_active_p ()) 900171: return pthread_mutex_trylock (__mutex); 900171: else 900171: return 0; 900171: } 900171: 900171: 900171: static inline int 900171: __gthread_mutex_timedlock (__gthread_mutex_t *__mutex, 900171: const __gthread_time_t *__abs_timeout) 900171: { 900171: if (__gthread_active_p ()) 900171: return pthread_mutex_timedlock (__mutex, __abs_timeout); 900171: else 900171: return 0; 900171: } 900171: 900171: 900171: static inline int 900171: __gthread_mutex_unlock (__gthread_mutex_t *__mutex) 900171: { 900171: if (__gthread_active_p ()) 900171: return pthread_mutex_unlock (__mutex); 900171: else 900171: return 0; 900171: } 900171: # 808 "/usr/aarch64-linux-gnu/include/c++/12/aarch64-linux-gnu/bits/gthr-default.h" 3 900171: static inline int 900171: __gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) 900171: { 900171: return __gthread_mutex_lock (__mutex); 900171: } 900171: 900171: static inline int 900171: __gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) 900171: { 900171: return __gthread_mutex_trylock (__mutex); 900171: } 900171: 900171: 900171: static inline int 900171: __gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *__mutex, 900171: const __gthread_time_t *__abs_timeout) 900171: { 900171: return __gthread_mutex_timedlock (__mutex, __abs_timeout); 900171: } 900171: 900171: 900171: static inline int 900171: __gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) 900171: { 900171: return __gthread_mutex_unlock (__mutex); 900171: } 900171: 900171: static inline int 900171: __gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) 900171: { 900171: return __gthread_mutex_destroy (__mutex); 900171: } 900171: # 850 "/usr/aarch64-linux-gnu/include/c++/12/aarch64-linux-gnu/bits/gthr-default.h" 3 900171: static inline int 900171: __gthread_cond_broadcast (__gthread_cond_t *__cond) 900171: { 900171: return pthread_cond_broadcast (__cond); 900171: } 900171: 900171: static inline int 900171: __gthread_cond_signal (__gthread_cond_t *__cond) 900171: { 900171: return pthread_cond_signal (__cond); 900171: } 900171: 900171: static inline int 900171: __gthread_cond_wait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex) 900171: { 900171: return pthread_cond_wait (__cond, __mutex); 900171: } 900171: 900171: static inline int 900171: __gthread_cond_timedwait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex, 900171: const __gthread_time_t *__abs_timeout) 900171: { 900171: return pthread_cond_timedwait (__cond, __mutex, __abs_timeout); 900171: } 900171: 900171: static inline int 900171: __gthread_cond_wait_recursive (__gthread_cond_t *__cond, 900171: __gthread_recursive_mutex_t *__mutex) 900171: { 900171: return __gthread_cond_wait (__cond, __mutex); 900171: } 900171: 900171: static inline int 900171: __gthread_cond_destroy (__gthread_cond_t* __cond) 900171: { 900171: return pthread_cond_destroy (__cond); 900171: } 900171: # 149 "/usr/aarch64-linux-gnu/include/c++/12/aarch64-linux-gnu/bits/gthr.h" 2 3 900171: 900171: 900171: #pragma GCC visibility pop 900171: # 36 "/usr/aarch64-linux-gnu/include/c++/12/ext/atomicity.h" 2 3 900171: # 1 "/usr/aarch64-linux-gnu/include/c++/12/aarch64-linux-gnu/bits/atomic_word.h" 1 3 900171: # 32 "/usr/aarch64-linux-gnu/include/c++/12/aarch64-linux-gnu/bits/atomic_word.h" 3 900171: typedef int _Atomic_word; 900171: # 37 "/usr/aarch64-linux-gnu/include/c++/12/ext/atomicity.h" 2 3 900171: 900171: # 1 "/usr/aarch64-linux-gnu/include/sys/single_threaded.h" 1 3 900171: # 24 "/usr/aarch64-linux-gnu/include/sys/single_threaded.h" 3 900171: extern "C" { 900171: 900171: 900171: 900171: 900171: extern char __libc_single_threaded; 900171: 900171: } 900171: # 39 "/usr/aarch64-linux-gnu/include/c++/12/ext/atomicity.h" 2 3 900171: 900171: 900171: namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) 900171: { 900171: 900171: 900171: __attribute__((__always_inline__)) 900171: inline bool 900171: __is_single_threaded() noexcept 900171: { 900171: 900171: 900171: 900171: return ::__libc_single_threaded; 900171: 900171: 900171: 900171: } 900171: 900171: 900171: 900171: 900171: 900171: 900171: inline _Atomic_word 900171: __attribute__((__always_inline__)) 900171: __exchange_and_add(volatile _Atomic_word* __mem, int __val) 900171: { return __atomic_fetch_add(__mem, __val, 4); } 900171: 900171: inline void 900171: __attribute__((__always_inline__)) 900171: __atomic_add(volatile _Atomic_word* __mem, int __val) 900171: { __atomic_fetch_add(__mem, __val, 4); } 900171: # 80 "/usr/aarch64-linux-gnu/include/c++/12/ext/atomicity.h" 3 900171: inline _Atomic_word 900171: __attribute__((__always_inline__)) 900171: __exchange_and_add_single(_Atomic_word* __mem, int __val) 900171: { 900171: _Atomic_word __result = *__mem; 900171: *__mem += __val; 900171: return __result; 900171: } 900171: 900171: inline void 900171: __attribute__((__always_inline__)) 900171: __atomic_add_single(_Atomic_word* __mem, int __val) 900171: { *__mem += __val; } 900171: 900171: inline _Atomic_word 900171: __attribute__ ((__always_inline__)) 900171: __exchange_and_add_dispatch(_Atomic_word* __mem, int __val) 900171: { 900171: if (__is_single_threaded()) 900171: return __exchange_and_add_single(__mem, __val); 900171: else 900171: return __exchange_and_add(__mem, __val); 900171: } 900171: 900171: inline void 900171: __attribute__ ((__always_inline__)) 900171: __atomic_add_dispatch(_Atomic_word* __mem, int __val) 900171: { 900171: if (__is_single_threaded()) 900171: __atomic_add_single(__mem, __val); 900171: else 900171: __atomic_add(__mem, __val); 900171: } 900171: 900171: 900171: } 900171: # 62 "/usr/aarch64-linux-gnu/include/c++/12/bits/shared_ptr_base.h" 2 3 900171: # 1 "/usr/aarch64-linux-gnu/include/c++/12/ext/concurrence.h" 1 3 900171: # 32 "/usr/aarch64-linux-gnu/include/c++/12/ext/concurrence.h" 3 900171: 900171: # 33 "/usr/aarch64-linux-gnu/include/c++/12/ext/concurrence.h" 3 900171: 900171: # 1 "/usr/aarch64-linux-gnu/include/c++/12/exception" 1 3 900171: # 33 "/usr/aarch64-linux-gnu/include/c++/12/exception" 3 900171: 900171: # 34 "/usr/aarch64-linux-gnu/include/c++/12/exception" 3 900171: 900171: #pragma GCC visibility push(default) 900171: 900171: 900171: 900171: 900171: extern "C++" { 900171: 900171: namespace std 900171: { 900171: # 53 "/usr/aarch64-linux-gnu/include/c++/12/exception" 3 900171: class bad_exception : public exception 900171: { 900171: public: 900171: bad_exception() noexcept { } 900171: 900171: 900171: 900171: virtual ~bad_exception() noexcept; 900171: 900171: 900171: virtual const char* 900171: what() const noexcept; 900171: }; 900171: 900171: 900171: typedef void (*terminate_handler) (); 900171: 900171: 900171: terminate_handler set_terminate(terminate_handler) noexcept; 900171: 900171: 900171: 900171: terminate_handler get_terminate() noexcept; 900171: 900171: 900171: 900171: 900171: void terminate() noexcept __attribute__ ((__noreturn__)); 900171: 900171: 900171: 900171: typedef void (*__attribute__ ((__deprecated__)) unexpected_handler) (); 900171: 900171: 900171: 900171: 900171: 900171: __attribute__ ((__deprecated__)) 900171: unexpected_handler set_unexpected(unexpected_handler) noexcept; 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: __attribute__ ((__deprecated__)) 900171: unexpected_handler get_unexpected() noexcept; 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: __attribute__ ((__deprecated__)) 900171: void unexpected() __attribute__ ((__noreturn__)); 900171: # 123 "/usr/aarch64-linux-gnu/include/c++/12/exception" 3 900171: 900171: bool uncaught_exception() noexcept __attribute__ ((__pure__)); 900171: # 136 "/usr/aarch64-linux-gnu/include/c++/12/exception" 3 900171: } 900171: 900171: namespace __gnu_cxx 900171: { 900171: 900171: # 158 "/usr/aarch64-linux-gnu/include/c++/12/exception" 3 900171: void __verbose_terminate_handler(); 900171: 900171: 900171: } 900171: 900171: } 900171: 900171: #pragma GCC visibility pop 900171: 900171: 900171: # 1 "/usr/aarch64-linux-gnu/include/c++/12/bits/exception_ptr.h" 1 3 900171: # 34 "/usr/aarch64-linux-gnu/include/c++/12/bits/exception_ptr.h" 3 900171: #pragma GCC visibility push(default) 900171: 900171: 900171: 900171: # 1 "/usr/aarch64-linux-gnu/include/c++/12/bits/cxxabi_init_exception.h" 1 3 900171: # 34 "/usr/aarch64-linux-gnu/include/c++/12/bits/cxxabi_init_exception.h" 3 900171: 900171: # 35 "/usr/aarch64-linux-gnu/include/c++/12/bits/cxxabi_init_exception.h" 3 900171: 900171: #pragma GCC visibility push(default) 900171: 900171: # 1 "/usr/lib/gcc-cross/aarch64-linux-gnu/12/include/stddef.h" 1 3 4 900171: # 145 "/usr/lib/gcc-cross/aarch64-linux-gnu/12/include/stddef.h" 3 4 900171: typedef long int ptrdiff_t; 900171: # 424 "/usr/lib/gcc-cross/aarch64-linux-gnu/12/include/stddef.h" 3 4 900171: typedef struct { 900171: long long __max_align_ll __attribute__((__aligned__(__alignof__(long long)))); 900171: long double __max_align_ld __attribute__((__aligned__(__alignof__(long double)))); 900171: # 435 "/usr/lib/gcc-cross/aarch64-linux-gnu/12/include/stddef.h" 3 4 900171: } max_align_t; 900171: 900171: 900171: 900171: 900171: 900171: 900171: typedef decltype(nullptr) nullptr_t; 900171: # 39 "/usr/aarch64-linux-gnu/include/c++/12/bits/cxxabi_init_exception.h" 2 3 900171: # 50 "/usr/aarch64-linux-gnu/include/c++/12/bits/cxxabi_init_exception.h" 3 900171: namespace std 900171: { 900171: class type_info; 900171: } 900171: 900171: namespace __cxxabiv1 900171: { 900171: struct __cxa_refcounted_exception; 900171: 900171: extern "C" 900171: { 900171: 900171: void* 900171: __cxa_allocate_exception(size_t) noexcept; 900171: 900171: void 900171: __cxa_free_exception(void*) noexcept; 900171: 900171: 900171: __cxa_refcounted_exception* 900171: __cxa_init_primary_exception(void *object, std::type_info *tinfo, 900171: void ( *dest) (void *)) noexcept; 900171: 900171: } 900171: } 900171: 900171: 900171: 900171: #pragma GCC visibility pop 900171: # 39 "/usr/aarch64-linux-gnu/include/c++/12/bits/exception_ptr.h" 2 3 900171: # 52 "/usr/aarch64-linux-gnu/include/c++/12/bits/exception_ptr.h" 3 900171: extern "C++" { 900171: 900171: namespace std 900171: { 900171: class type_info; 900171: 900171: 900171: 900171: 900171: 900171: 900171: namespace __exception_ptr 900171: { 900171: class exception_ptr; 900171: } 900171: 900171: using __exception_ptr::exception_ptr; 900171: 900171: 900171: 900171: 900171: 900171: exception_ptr current_exception() noexcept; 900171: 900171: template 900171: exception_ptr make_exception_ptr(_Ex) noexcept; 900171: 900171: 900171: void rethrow_exception(exception_ptr) __attribute__ ((__noreturn__)); 900171: 900171: namespace __exception_ptr 900171: { 900171: using std::rethrow_exception; 900171: 900171: 900171: 900171: 900171: 900171: class exception_ptr 900171: { 900171: void* _M_exception_object; 900171: 900171: explicit exception_ptr(void* __e) noexcept; 900171: 900171: void _M_addref() noexcept; 900171: void _M_release() noexcept; 900171: 900171: void *_M_get() const noexcept __attribute__ ((__pure__)); 900171: 900171: friend exception_ptr std::current_exception() noexcept; 900171: friend void std::rethrow_exception(exception_ptr); 900171: template 900171: friend exception_ptr std::make_exception_ptr(_Ex) noexcept; 900171: 900171: public: 900171: exception_ptr() noexcept; 900171: 900171: exception_ptr(const exception_ptr&) noexcept; 900171: 900171: 900171: exception_ptr(nullptr_t) noexcept 900171: : _M_exception_object(nullptr) 900171: { } 900171: 900171: exception_ptr(exception_ptr&& __o) noexcept 900171: : _M_exception_object(__o._M_exception_object) 900171: { __o._M_exception_object = nullptr; } 900171: # 128 "/usr/aarch64-linux-gnu/include/c++/12/bits/exception_ptr.h" 3 900171: exception_ptr& 900171: operator=(const exception_ptr&) noexcept; 900171: 900171: 900171: exception_ptr& 900171: operator=(exception_ptr&& __o) noexcept 900171: { 900171: exception_ptr(static_cast(__o)).swap(*this); 900171: return *this; 900171: } 900171: 900171: 900171: ~exception_ptr() noexcept; 900171: 900171: void 900171: swap(exception_ptr&) noexcept; 900171: # 155 "/usr/aarch64-linux-gnu/include/c++/12/bits/exception_ptr.h" 3 900171: explicit operator bool() const noexcept 900171: { return _M_exception_object; } 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: friend bool 900171: operator==(const exception_ptr& __x, const exception_ptr& __y) 900171: noexcept 900171: { return __x._M_exception_object == __y._M_exception_object; } 900171: 900171: friend bool 900171: operator!=(const exception_ptr& __x, const exception_ptr& __y) 900171: noexcept 900171: { return __x._M_exception_object != __y._M_exception_object; } 900171: 900171: 900171: const class std::type_info* 900171: __cxa_exception_type() const noexcept 900171: __attribute__ ((__pure__)); 900171: }; 900171: 900171: 900171: inline 900171: exception_ptr::exception_ptr() noexcept 900171: : _M_exception_object(0) 900171: { } 900171: 900171: 900171: inline 900171: exception_ptr::exception_ptr(const exception_ptr& __other) 900171: noexcept 900171: : _M_exception_object(__other._M_exception_object) 900171: { 900171: if (_M_exception_object) 900171: _M_addref(); 900171: } 900171: 900171: 900171: inline 900171: exception_ptr::~exception_ptr() noexcept 900171: { 900171: if (_M_exception_object) 900171: _M_release(); 900171: } 900171: 900171: 900171: inline exception_ptr& 900171: exception_ptr::operator=(const exception_ptr& __other) noexcept 900171: { 900171: exception_ptr(__other).swap(*this); 900171: return *this; 900171: } 900171: 900171: 900171: inline void 900171: exception_ptr::swap(exception_ptr &__other) noexcept 900171: { 900171: void *__tmp = _M_exception_object; 900171: _M_exception_object = __other._M_exception_object; 900171: __other._M_exception_object = __tmp; 900171: } 900171: 900171: 900171: inline void 900171: swap(exception_ptr& __lhs, exception_ptr& __rhs) 900171: { __lhs.swap(__rhs); } 900171: 900171: 900171: template 900171: 900171: inline void 900171: __dest_thunk(void* __x) 900171: { static_cast<_Ex*>(__x)->~_Ex(); } 900171: 900171: 900171: } 900171: 900171: 900171: 900171: template 900171: exception_ptr 900171: make_exception_ptr(_Ex __ex) noexcept 900171: { 900171: 900171: using _Ex2 = typename decay<_Ex>::type; 900171: void* __e = __cxxabiv1::__cxa_allocate_exception(sizeof(_Ex)); 900171: (void) __cxxabiv1::__cxa_init_primary_exception( 900171: __e, const_cast(&typeid(_Ex)), 900171: __exception_ptr::__dest_thunk<_Ex2>); 900171: try 900171: { 900171: ::new (__e) _Ex2(__ex); 900171: return exception_ptr(__e); 900171: } 900171: catch(...) 900171: { 900171: __cxxabiv1::__cxa_free_exception(__e); 900171: return current_exception(); 900171: } 900171: # 268 "/usr/aarch64-linux-gnu/include/c++/12/bits/exception_ptr.h" 3 900171: } 900171: # 282 "/usr/aarch64-linux-gnu/include/c++/12/bits/exception_ptr.h" 3 900171: } 900171: 900171: } 900171: 900171: #pragma GCC visibility pop 900171: # 169 "/usr/aarch64-linux-gnu/include/c++/12/exception" 2 3 900171: # 1 "/usr/aarch64-linux-gnu/include/c++/12/bits/nested_exception.h" 1 3 900171: # 33 "/usr/aarch64-linux-gnu/include/c++/12/bits/nested_exception.h" 3 900171: #pragma GCC visibility push(default) 900171: # 42 "/usr/aarch64-linux-gnu/include/c++/12/bits/nested_exception.h" 3 900171: extern "C++" { 900171: 900171: namespace std 900171: { 900171: 900171: 900171: 900171: 900171: 900171: 900171: class nested_exception 900171: { 900171: exception_ptr _M_ptr; 900171: 900171: public: 900171: nested_exception() noexcept : _M_ptr(current_exception()) { } 900171: 900171: nested_exception(const nested_exception&) noexcept = default; 900171: 900171: nested_exception& operator=(const nested_exception&) noexcept = default; 900171: 900171: virtual ~nested_exception() noexcept; 900171: 900171: [[noreturn]] 900171: void 900171: rethrow_nested() const 900171: { 900171: if (_M_ptr) 900171: rethrow_exception(_M_ptr); 900171: std::terminate(); 900171: } 900171: 900171: exception_ptr 900171: nested_ptr() const noexcept 900171: { return _M_ptr; } 900171: }; 900171: 900171: 900171: 900171: template 900171: struct _Nested_exception : public _Except, public nested_exception 900171: { 900171: explicit _Nested_exception(const _Except& __ex) 900171: : _Except(__ex) 900171: { } 900171: 900171: explicit _Nested_exception(_Except&& __ex) 900171: : _Except(static_cast<_Except&&>(__ex)) 900171: { } 900171: }; 900171: 900171: 900171: 900171: 900171: template 900171: [[noreturn]] 900171: inline void 900171: __throw_with_nested_impl(_Tp&& __t, true_type) 900171: { 900171: using _Up = typename remove_reference<_Tp>::type; 900171: throw _Nested_exception<_Up>{std::forward<_Tp>(__t)}; 900171: } 900171: 900171: template 900171: [[noreturn]] 900171: inline void 900171: __throw_with_nested_impl(_Tp&& __t, false_type) 900171: { throw std::forward<_Tp>(__t); } 900171: 900171: 900171: 900171: 900171: 900171: template 900171: [[noreturn]] 900171: inline void 900171: throw_with_nested(_Tp&& __t) 900171: { 900171: using _Up = typename decay<_Tp>::type; 900171: using _CopyConstructible 900171: = __and_, is_move_constructible<_Up>>; 900171: static_assert(_CopyConstructible::value, 900171: "throw_with_nested argument must be CopyConstructible"); 900171: using __nest = __and_, __bool_constant, 900171: __not_>>; 900171: std::__throw_with_nested_impl(std::forward<_Tp>(__t), __nest{}); 900171: } 900171: 900171: 900171: 900171: 900171: template 900171: using __rethrow_if_nested_cond = typename enable_if< 900171: __and_, 900171: __or_<__not_>, 900171: is_convertible<_Tp*, nested_exception*>>>::value 900171: >::type; 900171: 900171: 900171: template 900171: inline __rethrow_if_nested_cond<_Ex> 900171: __rethrow_if_nested_impl(const _Ex* __ptr) 900171: { 900171: if (auto __ne_ptr = dynamic_cast(__ptr)) 900171: __ne_ptr->rethrow_nested(); 900171: } 900171: 900171: 900171: inline void 900171: __rethrow_if_nested_impl(const void*) 900171: { } 900171: 900171: 900171: 900171: 900171: template 900171: inline void 900171: rethrow_if_nested(const _Ex& __ex) 900171: { std::__rethrow_if_nested_impl(std::__addressof(__ex)); } 900171: 900171: 900171: } 900171: 900171: } 900171: 900171: 900171: 900171: #pragma GCC visibility pop 900171: # 170 "/usr/aarch64-linux-gnu/include/c++/12/exception" 2 3 900171: # 35 "/usr/aarch64-linux-gnu/include/c++/12/ext/concurrence.h" 2 3 900171: 900171: 900171: 900171: 900171: 900171: namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) 900171: { 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: enum _Lock_policy { _S_single, _S_mutex, _S_atomic }; 900171: 900171: 900171: 900171: static const _Lock_policy __default_lock_policy = 900171: 900171: 900171: 900171: _S_atomic; 900171: 900171: 900171: 900171: 900171: 900171: 900171: class __concurrence_lock_error : public std::exception 900171: { 900171: public: 900171: virtual char const* 900171: what() const throw() 900171: { return "__gnu_cxx::__concurrence_lock_error"; } 900171: }; 900171: 900171: class __concurrence_unlock_error : public std::exception 900171: { 900171: public: 900171: virtual char const* 900171: what() const throw() 900171: { return "__gnu_cxx::__concurrence_unlock_error"; } 900171: }; 900171: 900171: class __concurrence_broadcast_error : public std::exception 900171: { 900171: public: 900171: virtual char const* 900171: what() const throw() 900171: { return "__gnu_cxx::__concurrence_broadcast_error"; } 900171: }; 900171: 900171: class __concurrence_wait_error : public std::exception 900171: { 900171: public: 900171: virtual char const* 900171: what() const throw() 900171: { return "__gnu_cxx::__concurrence_wait_error"; } 900171: }; 900171: 900171: 900171: inline void 900171: __throw_concurrence_lock_error() 900171: { (throw (__concurrence_lock_error())); } 900171: 900171: inline void 900171: __throw_concurrence_unlock_error() 900171: { (throw (__concurrence_unlock_error())); } 900171: 900171: 900171: inline void 900171: __throw_concurrence_broadcast_error() 900171: { (throw (__concurrence_broadcast_error())); } 900171: 900171: inline void 900171: __throw_concurrence_wait_error() 900171: { (throw (__concurrence_wait_error())); } 900171: 900171: 900171: class __mutex 900171: { 900171: private: 900171: 900171: __gthread_mutex_t _M_mutex = { { 0, 0, 0, 0, PTHREAD_MUTEX_TIMED_NP, 0, { 0, 0 } } }; 900171: 900171: 900171: 900171: 900171: __mutex(const __mutex&); 900171: __mutex& operator=(const __mutex&); 900171: 900171: public: 900171: __mutex() 900171: { 900171: 900171: 900171: 900171: 900171: } 900171: # 144 "/usr/aarch64-linux-gnu/include/c++/12/ext/concurrence.h" 3 900171: void lock() 900171: { 900171: 900171: if (__gthread_active_p()) 900171: { 900171: if (__gthread_mutex_lock(&_M_mutex) != 0) 900171: __throw_concurrence_lock_error(); 900171: } 900171: 900171: } 900171: 900171: void unlock() 900171: { 900171: 900171: if (__gthread_active_p()) 900171: { 900171: if (__gthread_mutex_unlock(&_M_mutex) != 0) 900171: __throw_concurrence_unlock_error(); 900171: } 900171: 900171: } 900171: 900171: __gthread_mutex_t* gthread_mutex(void) 900171: { return &_M_mutex; } 900171: }; 900171: 900171: class __recursive_mutex 900171: { 900171: private: 900171: 900171: __gthread_recursive_mutex_t _M_mutex = { { 0, 0, 0, 0, PTHREAD_MUTEX_RECURSIVE_NP, 0, { 0, 0 } } }; 900171: 900171: 900171: 900171: 900171: __recursive_mutex(const __recursive_mutex&); 900171: __recursive_mutex& operator=(const __recursive_mutex&); 900171: 900171: public: 900171: __recursive_mutex() 900171: { 900171: 900171: 900171: 900171: 900171: } 900171: # 199 "/usr/aarch64-linux-gnu/include/c++/12/ext/concurrence.h" 3 900171: void lock() 900171: { 900171: 900171: if (__gthread_active_p()) 900171: { 900171: if (__gthread_recursive_mutex_lock(&_M_mutex) != 0) 900171: __throw_concurrence_lock_error(); 900171: } 900171: 900171: } 900171: 900171: void unlock() 900171: { 900171: 900171: if (__gthread_active_p()) 900171: { 900171: if (__gthread_recursive_mutex_unlock(&_M_mutex) != 0) 900171: __throw_concurrence_unlock_error(); 900171: } 900171: 900171: } 900171: 900171: __gthread_recursive_mutex_t* gthread_recursive_mutex(void) 900171: { return &_M_mutex; } 900171: }; 900171: 900171: 900171: 900171: 900171: class __scoped_lock 900171: { 900171: public: 900171: typedef __mutex __mutex_type; 900171: 900171: private: 900171: __mutex_type& _M_device; 900171: 900171: __scoped_lock(const __scoped_lock&); 900171: __scoped_lock& operator=(const __scoped_lock&); 900171: 900171: public: 900171: explicit __scoped_lock(__mutex_type& __name) : _M_device(__name) 900171: { _M_device.lock(); } 900171: 900171: ~__scoped_lock() throw() 900171: { _M_device.unlock(); } 900171: }; 900171: 900171: 900171: class __cond 900171: { 900171: private: 900171: 900171: __gthread_cond_t _M_cond = { { {0}, {0}, {0, 0}, {0, 0}, 0, 0, {0, 0} } }; 900171: 900171: 900171: 900171: 900171: __cond(const __cond&); 900171: __cond& operator=(const __cond&); 900171: 900171: public: 900171: __cond() 900171: { 900171: 900171: 900171: 900171: 900171: } 900171: # 277 "/usr/aarch64-linux-gnu/include/c++/12/ext/concurrence.h" 3 900171: void broadcast() 900171: { 900171: 900171: if (__gthread_active_p()) 900171: { 900171: if (__gthread_cond_broadcast(&_M_cond) != 0) 900171: __throw_concurrence_broadcast_error(); 900171: } 900171: 900171: } 900171: 900171: void wait(__mutex *mutex) 900171: { 900171: 900171: { 900171: if (__gthread_cond_wait(&_M_cond, mutex->gthread_mutex()) != 0) 900171: __throw_concurrence_wait_error(); 900171: } 900171: 900171: } 900171: 900171: void wait_recursive(__recursive_mutex *mutex) 900171: { 900171: 900171: { 900171: if (__gthread_cond_wait_recursive(&_M_cond, 900171: mutex->gthread_recursive_mutex()) 900171: != 0) 900171: __throw_concurrence_wait_error(); 900171: } 900171: 900171: } 900171: }; 900171: 900171: 900171: 900171: } 900171: # 63 "/usr/aarch64-linux-gnu/include/c++/12/bits/shared_ptr_base.h" 2 3 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: namespace std __attribute__ ((__visibility__ ("default"))) 900171: { 900171: 900171: 900171: 900171: #pragma GCC diagnostic push 900171: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 900171: template class auto_ptr; 900171: #pragma GCC diagnostic pop 900171: 900171: 900171: 900171: 900171: 900171: 900171: class bad_weak_ptr : public std::exception 900171: { 900171: public: 900171: virtual char const* what() const noexcept; 900171: 900171: virtual ~bad_weak_ptr() noexcept; 900171: }; 900171: 900171: 900171: inline void 900171: __throw_bad_weak_ptr() 900171: { (throw (bad_weak_ptr())); } 900171: 900171: using __gnu_cxx::_Lock_policy; 900171: using __gnu_cxx::__default_lock_policy; 900171: using __gnu_cxx::_S_single; 900171: using __gnu_cxx::_S_mutex; 900171: using __gnu_cxx::_S_atomic; 900171: 900171: 900171: template<_Lock_policy _Lp> 900171: class _Mutex_base 900171: { 900171: protected: 900171: 900171: enum { _S_need_barriers = 0 }; 900171: }; 900171: 900171: template<> 900171: class _Mutex_base<_S_mutex> 900171: : public __gnu_cxx::__mutex 900171: { 900171: protected: 900171: 900171: 900171: 900171: enum { _S_need_barriers = 1 }; 900171: }; 900171: 900171: template<_Lock_policy _Lp = __default_lock_policy> 900171: class _Sp_counted_base 900171: : public _Mutex_base<_Lp> 900171: { 900171: public: 900171: _Sp_counted_base() noexcept 900171: : _M_use_count(1), _M_weak_count(1) { } 900171: 900171: virtual 900171: ~_Sp_counted_base() noexcept 900171: { } 900171: 900171: 900171: 900171: virtual void 900171: _M_dispose() noexcept = 0; 900171: 900171: 900171: virtual void 900171: _M_destroy() noexcept 900171: { delete this; } 900171: 900171: virtual void* 900171: _M_get_deleter(const std::type_info&) noexcept = 0; 900171: 900171: 900171: void 900171: _M_add_ref_copy() 900171: { __gnu_cxx::__atomic_add_dispatch(&_M_use_count, 1); } 900171: 900171: 900171: void 900171: _M_add_ref_lock() 900171: { 900171: if (!_M_add_ref_lock_nothrow()) 900171: __throw_bad_weak_ptr(); 900171: } 900171: 900171: 900171: bool 900171: _M_add_ref_lock_nothrow() noexcept; 900171: 900171: 900171: void 900171: _M_release() noexcept; 900171: 900171: 900171: void 900171: _M_release_last_use() noexcept 900171: { 900171: ; 900171: _M_dispose(); 900171: 900171: 900171: 900171: 900171: if (_Mutex_base<_Lp>::_S_need_barriers) 900171: { 900171: __atomic_thread_fence (4); 900171: } 900171: 900171: 900171: ; 900171: if (__gnu_cxx::__exchange_and_add_dispatch(&_M_weak_count, 900171: -1) == 1) 900171: { 900171: ; 900171: _M_destroy(); 900171: } 900171: } 900171: 900171: 900171: __attribute__((__noinline__)) 900171: void 900171: _M_release_last_use_cold() noexcept 900171: { _M_release_last_use(); } 900171: 900171: 900171: void 900171: _M_weak_add_ref() noexcept 900171: { __gnu_cxx::__atomic_add_dispatch(&_M_weak_count, 1); } 900171: 900171: 900171: void 900171: _M_weak_release() noexcept 900171: { 900171: 900171: ; 900171: if (__gnu_cxx::__exchange_and_add_dispatch(&_M_weak_count, -1) == 1) 900171: { 900171: ; 900171: if (_Mutex_base<_Lp>::_S_need_barriers) 900171: { 900171: 900171: 900171: __atomic_thread_fence (4); 900171: } 900171: _M_destroy(); 900171: } 900171: } 900171: 900171: long 900171: _M_get_use_count() const noexcept 900171: { 900171: 900171: 900171: return __atomic_load_n(&_M_use_count, 0); 900171: } 900171: 900171: private: 900171: _Sp_counted_base(_Sp_counted_base const&) = delete; 900171: _Sp_counted_base& operator=(_Sp_counted_base const&) = delete; 900171: 900171: _Atomic_word _M_use_count; 900171: _Atomic_word _M_weak_count; 900171: }; 900171: 900171: template<> 900171: inline bool 900171: _Sp_counted_base<_S_single>:: 900171: _M_add_ref_lock_nothrow() noexcept 900171: { 900171: if (_M_use_count == 0) 900171: return false; 900171: ++_M_use_count; 900171: return true; 900171: } 900171: 900171: template<> 900171: inline bool 900171: _Sp_counted_base<_S_mutex>:: 900171: _M_add_ref_lock_nothrow() noexcept 900171: { 900171: __gnu_cxx::__scoped_lock sentry(*this); 900171: if (__gnu_cxx::__exchange_and_add_dispatch(&_M_use_count, 1) == 0) 900171: { 900171: _M_use_count = 0; 900171: return false; 900171: } 900171: return true; 900171: } 900171: 900171: template<> 900171: inline bool 900171: _Sp_counted_base<_S_atomic>:: 900171: _M_add_ref_lock_nothrow() noexcept 900171: { 900171: 900171: _Atomic_word __count = _M_get_use_count(); 900171: do 900171: { 900171: if (__count == 0) 900171: return false; 900171: 900171: 900171: } 900171: while (!__atomic_compare_exchange_n(&_M_use_count, &__count, __count + 1, 900171: true, 4, 900171: 0)); 900171: return true; 900171: } 900171: 900171: template<> 900171: inline void 900171: _Sp_counted_base<_S_single>::_M_add_ref_copy() 900171: { ++_M_use_count; } 900171: 900171: template<> 900171: inline void 900171: _Sp_counted_base<_S_single>::_M_release() noexcept 900171: { 900171: if (--_M_use_count == 0) 900171: { 900171: _M_dispose(); 900171: if (--_M_weak_count == 0) 900171: _M_destroy(); 900171: } 900171: } 900171: 900171: template<> 900171: inline void 900171: _Sp_counted_base<_S_mutex>::_M_release() noexcept 900171: { 900171: 900171: ; 900171: if (__gnu_cxx::__exchange_and_add_dispatch(&_M_use_count, -1) == 1) 900171: { 900171: _M_release_last_use(); 900171: } 900171: } 900171: 900171: template<> 900171: inline void 900171: _Sp_counted_base<_S_atomic>::_M_release() noexcept 900171: { 900171: ; 900171: 900171: constexpr bool __lock_free 900171: = __atomic_always_lock_free(sizeof(long long), 0) 900171: && __atomic_always_lock_free(sizeof(_Atomic_word), 0); 900171: constexpr bool __double_word 900171: = sizeof(long long) == 2 * sizeof(_Atomic_word); 900171: 900171: 900171: constexpr bool __aligned = __alignof(long long) <= alignof(void*); 900171: if (__lock_free && __double_word && __aligned) 900171: { 900171: constexpr int __wordbits = 8 * sizeof(_Atomic_word); 900171: constexpr int __shiftbits = __double_word ? __wordbits : 0; 900171: constexpr long long __unique_ref = 1LL + (1LL << __shiftbits); 900171: auto __both_counts = reinterpret_cast(&_M_use_count); 900171: 900171: ; 900171: if (__atomic_load_n(__both_counts, 2) == __unique_ref) 900171: { 900171: 900171: 900171: 900171: 900171: _M_weak_count = _M_use_count = 0; 900171: ; 900171: ; 900171: _M_dispose(); 900171: _M_destroy(); 900171: return; 900171: } 900171: if (__gnu_cxx::__exchange_and_add_dispatch(&_M_use_count, -1) == 1) 900171: [[__unlikely__]] 900171: { 900171: _M_release_last_use_cold(); 900171: return; 900171: } 900171: } 900171: else 900171: 900171: if (__gnu_cxx::__exchange_and_add_dispatch(&_M_use_count, -1) == 1) 900171: { 900171: _M_release_last_use(); 900171: } 900171: } 900171: 900171: template<> 900171: inline void 900171: _Sp_counted_base<_S_single>::_M_weak_add_ref() noexcept 900171: { ++_M_weak_count; } 900171: 900171: template<> 900171: inline void 900171: _Sp_counted_base<_S_single>::_M_weak_release() noexcept 900171: { 900171: if (--_M_weak_count == 0) 900171: _M_destroy(); 900171: } 900171: 900171: template<> 900171: inline long 900171: _Sp_counted_base<_S_single>::_M_get_use_count() const noexcept 900171: { return _M_use_count; } 900171: 900171: 900171: 900171: template 900171: class __shared_ptr; 900171: 900171: template 900171: class __weak_ptr; 900171: 900171: template 900171: class __enable_shared_from_this; 900171: 900171: template 900171: class shared_ptr; 900171: 900171: template 900171: class weak_ptr; 900171: 900171: template 900171: struct owner_less; 900171: 900171: template 900171: class enable_shared_from_this; 900171: 900171: template<_Lock_policy _Lp = __default_lock_policy> 900171: class __weak_count; 900171: 900171: template<_Lock_policy _Lp = __default_lock_policy> 900171: class __shared_count; 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: template 900171: class _Sp_counted_ptr final : public _Sp_counted_base<_Lp> 900171: { 900171: public: 900171: explicit 900171: _Sp_counted_ptr(_Ptr __p) noexcept 900171: : _M_ptr(__p) { } 900171: 900171: virtual void 900171: _M_dispose() noexcept 900171: { delete _M_ptr; } 900171: 900171: virtual void 900171: _M_destroy() noexcept 900171: { delete this; } 900171: 900171: virtual void* 900171: _M_get_deleter(const std::type_info&) noexcept 900171: { return nullptr; } 900171: 900171: _Sp_counted_ptr(const _Sp_counted_ptr&) = delete; 900171: _Sp_counted_ptr& operator=(const _Sp_counted_ptr&) = delete; 900171: 900171: private: 900171: _Ptr _M_ptr; 900171: }; 900171: 900171: template<> 900171: inline void 900171: _Sp_counted_ptr::_M_dispose() noexcept { } 900171: 900171: template<> 900171: inline void 900171: _Sp_counted_ptr::_M_dispose() noexcept { } 900171: 900171: template<> 900171: inline void 900171: _Sp_counted_ptr::_M_dispose() noexcept { } 900171: 900171: 900171: 900171: 900171: 900171: 900171: template 900171: struct _Sp_ebo_helper; 900171: 900171: 900171: template 900171: struct _Sp_ebo_helper<_Nm, _Tp, true> : private _Tp 900171: { 900171: explicit _Sp_ebo_helper(const _Tp& __tp) : _Tp(__tp) { } 900171: explicit _Sp_ebo_helper(_Tp&& __tp) : _Tp(std::move(__tp)) { } 900171: 900171: static _Tp& 900171: _S_get(_Sp_ebo_helper& __eboh) { return static_cast<_Tp&>(__eboh); } 900171: }; 900171: 900171: 900171: template 900171: struct _Sp_ebo_helper<_Nm, _Tp, false> 900171: { 900171: explicit _Sp_ebo_helper(const _Tp& __tp) : _M_tp(__tp) { } 900171: explicit _Sp_ebo_helper(_Tp&& __tp) : _M_tp(std::move(__tp)) { } 900171: 900171: static _Tp& 900171: _S_get(_Sp_ebo_helper& __eboh) 900171: { return __eboh._M_tp; } 900171: 900171: private: 900171: _Tp _M_tp; 900171: }; 900171: 900171: 900171: template 900171: class _Sp_counted_deleter final : public _Sp_counted_base<_Lp> 900171: { 900171: class _Impl : _Sp_ebo_helper<0, _Deleter>, _Sp_ebo_helper<1, _Alloc> 900171: { 900171: typedef _Sp_ebo_helper<0, _Deleter> _Del_base; 900171: typedef _Sp_ebo_helper<1, _Alloc> _Alloc_base; 900171: 900171: public: 900171: _Impl(_Ptr __p, _Deleter __d, const _Alloc& __a) noexcept 900171: : _Del_base(std::move(__d)), _Alloc_base(__a), _M_ptr(__p) 900171: { } 900171: 900171: _Deleter& _M_del() noexcept { return _Del_base::_S_get(*this); } 900171: _Alloc& _M_alloc() noexcept { return _Alloc_base::_S_get(*this); } 900171: 900171: _Ptr _M_ptr; 900171: }; 900171: 900171: public: 900171: using __allocator_type = __alloc_rebind<_Alloc, _Sp_counted_deleter>; 900171: 900171: 900171: _Sp_counted_deleter(_Ptr __p, _Deleter __d) noexcept 900171: : _M_impl(__p, std::move(__d), _Alloc()) { } 900171: 900171: 900171: _Sp_counted_deleter(_Ptr __p, _Deleter __d, const _Alloc& __a) noexcept 900171: : _M_impl(__p, std::move(__d), __a) { } 900171: 900171: ~_Sp_counted_deleter() noexcept { } 900171: 900171: virtual void 900171: _M_dispose() noexcept 900171: { _M_impl._M_del()(_M_impl._M_ptr); } 900171: 900171: virtual void 900171: _M_destroy() noexcept 900171: { 900171: __allocator_type __a(_M_impl._M_alloc()); 900171: __allocated_ptr<__allocator_type> __guard_ptr{ __a, this }; 900171: this->~_Sp_counted_deleter(); 900171: } 900171: 900171: virtual void* 900171: _M_get_deleter(const type_info& __ti [[__gnu__::__unused__]]) noexcept 900171: { 900171: 900171: 900171: 900171: return __ti == typeid(_Deleter) 900171: ? std::__addressof(_M_impl._M_del()) 900171: : nullptr; 900171: 900171: 900171: 900171: } 900171: 900171: private: 900171: _Impl _M_impl; 900171: }; 900171: 900171: 900171: 900171: struct _Sp_make_shared_tag 900171: { 900171: private: 900171: template 900171: friend class _Sp_counted_ptr_inplace; 900171: 900171: static const type_info& 900171: _S_ti() noexcept __attribute__ ((__visibility__ ("default"))) 900171: { 900171: alignas(type_info) static constexpr char __tag[sizeof(type_info)] = { }; 900171: return reinterpret_cast(__tag); 900171: } 900171: 900171: static bool _S_eq(const type_info&) noexcept; 900171: }; 900171: 900171: template 900171: struct _Sp_alloc_shared_tag 900171: { 900171: const _Alloc& _M_a; 900171: }; 900171: 900171: template 900171: class _Sp_counted_ptr_inplace final : public _Sp_counted_base<_Lp> 900171: { 900171: class _Impl : _Sp_ebo_helper<0, _Alloc> 900171: { 900171: typedef _Sp_ebo_helper<0, _Alloc> _A_base; 900171: 900171: public: 900171: explicit _Impl(_Alloc __a) noexcept : _A_base(__a) { } 900171: 900171: _Alloc& _M_alloc() noexcept { return _A_base::_S_get(*this); } 900171: 900171: __gnu_cxx::__aligned_buffer<_Tp> _M_storage; 900171: }; 900171: 900171: public: 900171: using __allocator_type = __alloc_rebind<_Alloc, _Sp_counted_ptr_inplace>; 900171: 900171: 900171: template 900171: _Sp_counted_ptr_inplace(_Alloc __a, _Args&&... __args) 900171: : _M_impl(__a) 900171: { 900171: 900171: 900171: allocator_traits<_Alloc>::construct(__a, _M_ptr(), 900171: std::forward<_Args>(__args)...); 900171: } 900171: 900171: ~_Sp_counted_ptr_inplace() noexcept { } 900171: 900171: virtual void 900171: _M_dispose() noexcept 900171: { 900171: allocator_traits<_Alloc>::destroy(_M_impl._M_alloc(), _M_ptr()); 900171: } 900171: 900171: 900171: virtual void 900171: _M_destroy() noexcept 900171: { 900171: __allocator_type __a(_M_impl._M_alloc()); 900171: __allocated_ptr<__allocator_type> __guard_ptr{ __a, this }; 900171: this->~_Sp_counted_ptr_inplace(); 900171: } 900171: 900171: private: 900171: friend class __shared_count<_Lp>; 900171: 900171: 900171: 900171: virtual void* 900171: _M_get_deleter(const std::type_info& __ti) noexcept override 900171: { 900171: auto __ptr = const_cast::type*>(_M_ptr()); 900171: 900171: 900171: 900171: 900171: if (&__ti == &_Sp_make_shared_tag::_S_ti() 900171: || 900171: 900171: __ti == typeid(_Sp_make_shared_tag) 900171: 900171: 900171: 900171: ) 900171: return __ptr; 900171: return nullptr; 900171: } 900171: 900171: _Tp* _M_ptr() noexcept { return _M_impl._M_storage._M_ptr(); } 900171: 900171: _Impl _M_impl; 900171: }; 900171: # 886 "/usr/aarch64-linux-gnu/include/c++/12/bits/shared_ptr_base.h" 3 900171: struct __sp_array_delete 900171: { 900171: template 900171: void operator()(_Yp* __p) const { delete[] __p; } 900171: }; 900171: 900171: template<_Lock_policy _Lp> 900171: class __shared_count 900171: { 900171: 900171: template 900171: struct __not_alloc_shared_tag { using type = void; }; 900171: 900171: template 900171: struct __not_alloc_shared_tag<_Sp_alloc_shared_tag<_Tp>> { }; 900171: 900171: 900171: 900171: 900171: 900171: 900171: public: 900171: constexpr __shared_count() noexcept : _M_pi(0) 900171: { } 900171: 900171: template 900171: explicit 900171: __shared_count(_Ptr __p) : _M_pi(0) 900171: { 900171: try 900171: { 900171: _M_pi = new _Sp_counted_ptr<_Ptr, _Lp>(__p); 900171: } 900171: catch(...) 900171: { 900171: delete __p; 900171: throw; 900171: } 900171: } 900171: 900171: template 900171: __shared_count(_Ptr __p, false_type) 900171: : __shared_count(__p) 900171: { } 900171: 900171: template 900171: __shared_count(_Ptr __p, true_type) 900171: : __shared_count(__p, __sp_array_delete{}, allocator()) 900171: { } 900171: 900171: template::type> 900171: __shared_count(_Ptr __p, _Deleter __d) 900171: : __shared_count(__p, std::move(__d), allocator()) 900171: { } 900171: 900171: template::type> 900171: __shared_count(_Ptr __p, _Deleter __d, _Alloc __a) : _M_pi(0) 900171: { 900171: typedef _Sp_counted_deleter<_Ptr, _Deleter, _Alloc, _Lp> _Sp_cd_type; 900171: try 900171: { 900171: typename _Sp_cd_type::__allocator_type __a2(__a); 900171: auto __guard = std::__allocate_guarded(__a2); 900171: _Sp_cd_type* __mem = __guard.get(); 900171: ::new (__mem) _Sp_cd_type(__p, std::move(__d), std::move(__a)); 900171: _M_pi = __mem; 900171: __guard = nullptr; 900171: } 900171: catch(...) 900171: { 900171: __d(__p); 900171: throw; 900171: } 900171: } 900171: 900171: template 900171: __shared_count(_Tp*& __p, _Sp_alloc_shared_tag<_Alloc> __a, 900171: _Args&&... __args) 900171: { 900171: typedef _Sp_counted_ptr_inplace<_Tp, _Alloc, _Lp> _Sp_cp_type; 900171: typename _Sp_cp_type::__allocator_type __a2(__a._M_a); 900171: auto __guard = std::__allocate_guarded(__a2); 900171: _Sp_cp_type* __mem = __guard.get(); 900171: auto __pi = ::new (__mem) 900171: _Sp_cp_type(__a._M_a, std::forward<_Args>(__args)...); 900171: __guard = nullptr; 900171: _M_pi = __pi; 900171: __p = __pi->_M_ptr(); 900171: } 900171: # 1024 "/usr/aarch64-linux-gnu/include/c++/12/bits/shared_ptr_base.h" 3 900171: #pragma GCC diagnostic push 900171: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 900171: 900171: template 900171: explicit 900171: __shared_count(std::auto_ptr<_Tp>&& __r); 900171: #pragma GCC diagnostic pop 900171: 900171: 900171: 900171: template 900171: explicit 900171: __shared_count(std::unique_ptr<_Tp, _Del>&& __r) : _M_pi(0) 900171: { 900171: 900171: 900171: if (__r.get() == nullptr) 900171: return; 900171: 900171: using _Ptr = typename unique_ptr<_Tp, _Del>::pointer; 900171: using _Del2 = __conditional_t::value, 900171: reference_wrapper::type>, 900171: _Del>; 900171: using _Sp_cd_type 900171: = _Sp_counted_deleter<_Ptr, _Del2, allocator, _Lp>; 900171: using _Alloc = allocator<_Sp_cd_type>; 900171: using _Alloc_traits = allocator_traits<_Alloc>; 900171: _Alloc __a; 900171: _Sp_cd_type* __mem = _Alloc_traits::allocate(__a, 1); 900171: 900171: 900171: 900171: _Alloc_traits::construct(__a, __mem, __r.release(), 900171: std::forward<_Del>(__r.get_deleter())); 900171: _M_pi = __mem; 900171: } 900171: 900171: 900171: explicit __shared_count(const __weak_count<_Lp>& __r); 900171: 900171: 900171: explicit 900171: __shared_count(const __weak_count<_Lp>& __r, std::nothrow_t) noexcept; 900171: 900171: ~__shared_count() noexcept 900171: { 900171: if (_M_pi != nullptr) 900171: _M_pi->_M_release(); 900171: } 900171: 900171: __shared_count(const __shared_count& __r) noexcept 900171: : _M_pi(__r._M_pi) 900171: { 900171: if (_M_pi != nullptr) 900171: _M_pi->_M_add_ref_copy(); 900171: } 900171: 900171: __shared_count& 900171: operator=(const __shared_count& __r) noexcept 900171: { 900171: _Sp_counted_base<_Lp>* __tmp = __r._M_pi; 900171: if (__tmp != _M_pi) 900171: { 900171: if (__tmp != nullptr) 900171: __tmp->_M_add_ref_copy(); 900171: if (_M_pi != nullptr) 900171: _M_pi->_M_release(); 900171: _M_pi = __tmp; 900171: } 900171: return *this; 900171: } 900171: 900171: void 900171: _M_swap(__shared_count& __r) noexcept 900171: { 900171: _Sp_counted_base<_Lp>* __tmp = __r._M_pi; 900171: __r._M_pi = _M_pi; 900171: _M_pi = __tmp; 900171: } 900171: 900171: long 900171: _M_get_use_count() const noexcept 900171: { return _M_pi ? _M_pi->_M_get_use_count() : 0; } 900171: 900171: bool 900171: _M_unique() const noexcept 900171: { return this->_M_get_use_count() == 1; } 900171: 900171: void* 900171: _M_get_deleter(const std::type_info& __ti) const noexcept 900171: { return _M_pi ? _M_pi->_M_get_deleter(__ti) : nullptr; } 900171: 900171: bool 900171: _M_less(const __shared_count& __rhs) const noexcept 900171: { return std::less<_Sp_counted_base<_Lp>*>()(this->_M_pi, __rhs._M_pi); } 900171: 900171: bool 900171: _M_less(const __weak_count<_Lp>& __rhs) const noexcept 900171: { return std::less<_Sp_counted_base<_Lp>*>()(this->_M_pi, __rhs._M_pi); } 900171: 900171: 900171: friend inline bool 900171: operator==(const __shared_count& __a, const __shared_count& __b) noexcept 900171: { return __a._M_pi == __b._M_pi; } 900171: 900171: private: 900171: friend class __weak_count<_Lp>; 900171: 900171: 900171: 900171: 900171: _Sp_counted_base<_Lp>* _M_pi; 900171: }; 900171: 900171: 900171: template<_Lock_policy _Lp> 900171: class __weak_count 900171: { 900171: public: 900171: constexpr __weak_count() noexcept : _M_pi(nullptr) 900171: { } 900171: 900171: __weak_count(const __shared_count<_Lp>& __r) noexcept 900171: : _M_pi(__r._M_pi) 900171: { 900171: if (_M_pi != nullptr) 900171: _M_pi->_M_weak_add_ref(); 900171: } 900171: 900171: __weak_count(const __weak_count& __r) noexcept 900171: : _M_pi(__r._M_pi) 900171: { 900171: if (_M_pi != nullptr) 900171: _M_pi->_M_weak_add_ref(); 900171: } 900171: 900171: __weak_count(__weak_count&& __r) noexcept 900171: : _M_pi(__r._M_pi) 900171: { __r._M_pi = nullptr; } 900171: 900171: ~__weak_count() noexcept 900171: { 900171: if (_M_pi != nullptr) 900171: _M_pi->_M_weak_release(); 900171: } 900171: 900171: __weak_count& 900171: operator=(const __shared_count<_Lp>& __r) noexcept 900171: { 900171: _Sp_counted_base<_Lp>* __tmp = __r._M_pi; 900171: if (__tmp != nullptr) 900171: __tmp->_M_weak_add_ref(); 900171: if (_M_pi != nullptr) 900171: _M_pi->_M_weak_release(); 900171: _M_pi = __tmp; 900171: return *this; 900171: } 900171: 900171: __weak_count& 900171: operator=(const __weak_count& __r) noexcept 900171: { 900171: _Sp_counted_base<_Lp>* __tmp = __r._M_pi; 900171: if (__tmp != nullptr) 900171: __tmp->_M_weak_add_ref(); 900171: if (_M_pi != nullptr) 900171: _M_pi->_M_weak_release(); 900171: _M_pi = __tmp; 900171: return *this; 900171: } 900171: 900171: __weak_count& 900171: operator=(__weak_count&& __r) noexcept 900171: { 900171: if (_M_pi != nullptr) 900171: _M_pi->_M_weak_release(); 900171: _M_pi = __r._M_pi; 900171: __r._M_pi = nullptr; 900171: return *this; 900171: } 900171: 900171: void 900171: _M_swap(__weak_count& __r) noexcept 900171: { 900171: _Sp_counted_base<_Lp>* __tmp = __r._M_pi; 900171: __r._M_pi = _M_pi; 900171: _M_pi = __tmp; 900171: } 900171: 900171: long 900171: _M_get_use_count() const noexcept 900171: { return _M_pi != nullptr ? _M_pi->_M_get_use_count() : 0; } 900171: 900171: bool 900171: _M_less(const __weak_count& __rhs) const noexcept 900171: { return std::less<_Sp_counted_base<_Lp>*>()(this->_M_pi, __rhs._M_pi); } 900171: 900171: bool 900171: _M_less(const __shared_count<_Lp>& __rhs) const noexcept 900171: { return std::less<_Sp_counted_base<_Lp>*>()(this->_M_pi, __rhs._M_pi); } 900171: 900171: 900171: friend inline bool 900171: operator==(const __weak_count& __a, const __weak_count& __b) noexcept 900171: { return __a._M_pi == __b._M_pi; } 900171: 900171: private: 900171: friend class __shared_count<_Lp>; 900171: 900171: 900171: 900171: 900171: _Sp_counted_base<_Lp>* _M_pi; 900171: }; 900171: 900171: 900171: template<_Lock_policy _Lp> 900171: inline 900171: __shared_count<_Lp>::__shared_count(const __weak_count<_Lp>& __r) 900171: : _M_pi(__r._M_pi) 900171: { 900171: if (_M_pi == nullptr || !_M_pi->_M_add_ref_lock_nothrow()) 900171: __throw_bad_weak_ptr(); 900171: } 900171: 900171: 900171: template<_Lock_policy _Lp> 900171: inline 900171: __shared_count<_Lp>:: 900171: __shared_count(const __weak_count<_Lp>& __r, std::nothrow_t) noexcept 900171: : _M_pi(__r._M_pi) 900171: { 900171: if (_M_pi && !_M_pi->_M_add_ref_lock_nothrow()) 900171: _M_pi = nullptr; 900171: } 900171: 900171: 900171: 900171: 900171: 900171: template 900171: struct __sp_compatible_with 900171: : false_type 900171: { }; 900171: 900171: template 900171: struct __sp_compatible_with<_Yp*, _Tp*> 900171: : is_convertible<_Yp*, _Tp*>::type 900171: { }; 900171: 900171: template 900171: struct __sp_compatible_with<_Up(*)[_Nm], _Up(*)[]> 900171: : true_type 900171: { }; 900171: 900171: template 900171: struct __sp_compatible_with<_Up(*)[_Nm], const _Up(*)[]> 900171: : true_type 900171: { }; 900171: 900171: template 900171: struct __sp_compatible_with<_Up(*)[_Nm], volatile _Up(*)[]> 900171: : true_type 900171: { }; 900171: 900171: template 900171: struct __sp_compatible_with<_Up(*)[_Nm], const volatile _Up(*)[]> 900171: : true_type 900171: { }; 900171: 900171: 900171: template 900171: struct __sp_is_constructible_arrN 900171: : false_type 900171: { }; 900171: 900171: template 900171: struct __sp_is_constructible_arrN<_Up, _Nm, _Yp, __void_t<_Yp[_Nm]>> 900171: : is_convertible<_Yp(*)[_Nm], _Up(*)[_Nm]>::type 900171: { }; 900171: 900171: 900171: template 900171: struct __sp_is_constructible_arr 900171: : false_type 900171: { }; 900171: 900171: template 900171: struct __sp_is_constructible_arr<_Up, _Yp, __void_t<_Yp[]>> 900171: : is_convertible<_Yp(*)[], _Up(*)[]>::type 900171: { }; 900171: 900171: 900171: template 900171: struct __sp_is_constructible; 900171: 900171: 900171: template 900171: struct __sp_is_constructible<_Up[_Nm], _Yp> 900171: : __sp_is_constructible_arrN<_Up, _Nm, _Yp>::type 900171: { }; 900171: 900171: 900171: template 900171: struct __sp_is_constructible<_Up[], _Yp> 900171: : __sp_is_constructible_arr<_Up, _Yp>::type 900171: { }; 900171: 900171: 900171: template 900171: struct __sp_is_constructible 900171: : is_convertible<_Yp*, _Tp*>::type 900171: { }; 900171: 900171: 900171: 900171: template::value, bool = is_void<_Tp>::value> 900171: class __shared_ptr_access 900171: { 900171: public: 900171: using element_type = _Tp; 900171: 900171: element_type& 900171: operator*() const noexcept 900171: { 900171: do { if (std::__is_constant_evaluated() && !bool(_M_get() != nullptr)) __builtin_unreachable(); } while (false); 900171: return *_M_get(); 900171: } 900171: 900171: element_type* 900171: operator->() const noexcept 900171: { 900171: ; 900171: return _M_get(); 900171: } 900171: 900171: private: 900171: element_type* 900171: _M_get() const noexcept 900171: { return static_cast*>(this)->get(); } 900171: }; 900171: 900171: 900171: template 900171: class __shared_ptr_access<_Tp, _Lp, false, true> 900171: { 900171: public: 900171: using element_type = _Tp; 900171: 900171: element_type* 900171: operator->() const noexcept 900171: { 900171: auto __ptr = static_cast*>(this)->get(); 900171: ; 900171: return __ptr; 900171: } 900171: }; 900171: 900171: 900171: template 900171: class __shared_ptr_access<_Tp, _Lp, true, false> 900171: { 900171: public: 900171: using element_type = typename remove_extent<_Tp>::type; 900171: 900171: 900171: [[__deprecated__("shared_ptr::operator* is absent from C++17")]] 900171: element_type& 900171: operator*() const noexcept 900171: { 900171: do { if (std::__is_constant_evaluated() && !bool(_M_get() != nullptr)) __builtin_unreachable(); } while (false); 900171: return *_M_get(); 900171: } 900171: 900171: [[__deprecated__("shared_ptr::operator-> is absent from C++17")]] 900171: element_type* 900171: operator->() const noexcept 900171: { 900171: ; 900171: return _M_get(); 900171: } 900171: 900171: 900171: element_type& 900171: operator[](ptrdiff_t __i) const noexcept 900171: { 900171: do { if (std::__is_constant_evaluated() && !bool(_M_get() != nullptr)) __builtin_unreachable(); } while (false); 900171: do { if (std::__is_constant_evaluated() && !bool(!extent<_Tp>::value || __i < extent<_Tp>::value)) __builtin_unreachable(); } while (false); 900171: return _M_get()[__i]; 900171: } 900171: 900171: private: 900171: element_type* 900171: _M_get() const noexcept 900171: { return static_cast*>(this)->get(); } 900171: }; 900171: 900171: template 900171: class __shared_ptr 900171: : public __shared_ptr_access<_Tp, _Lp> 900171: { 900171: public: 900171: using element_type = typename remove_extent<_Tp>::type; 900171: 900171: private: 900171: 900171: template 900171: using _SafeConv 900171: = typename enable_if<__sp_is_constructible<_Tp, _Yp>::value>::type; 900171: 900171: 900171: template 900171: using _Compatible = typename 900171: enable_if<__sp_compatible_with<_Yp*, _Tp*>::value, _Res>::type; 900171: 900171: 900171: template 900171: using _Assignable = _Compatible<_Yp, __shared_ptr&>; 900171: 900171: 900171: template::pointer> 900171: using _UniqCompatible = __enable_if_t<__and_< 900171: __sp_compatible_with<_Yp*, _Tp*>, 900171: is_convertible<_Ptr, element_type*>, 900171: is_move_constructible<_Del> 900171: >::value, _Res>; 900171: 900171: 900171: template 900171: using _UniqAssignable = _UniqCompatible<_Yp, _Del, __shared_ptr&>; 900171: 900171: public: 900171: 900171: 900171: 900171: 900171: 900171: constexpr __shared_ptr() noexcept 900171: : _M_ptr(0), _M_refcount() 900171: { } 900171: 900171: template> 900171: explicit 900171: __shared_ptr(_Yp* __p) 900171: : _M_ptr(__p), _M_refcount(__p, typename is_array<_Tp>::type()) 900171: { 900171: static_assert( !is_void<_Yp>::value, "incomplete type" ); 900171: static_assert( sizeof(_Yp) > 0, "incomplete type" ); 900171: _M_enable_shared_from_this_with(__p); 900171: } 900171: 900171: template> 900171: __shared_ptr(_Yp* __p, _Deleter __d) 900171: : _M_ptr(__p), _M_refcount(__p, std::move(__d)) 900171: { 900171: static_assert(__is_invocable<_Deleter&, _Yp*&>::value, 900171: "deleter expression d(p) is well-formed"); 900171: _M_enable_shared_from_this_with(__p); 900171: } 900171: 900171: template> 900171: __shared_ptr(_Yp* __p, _Deleter __d, _Alloc __a) 900171: : _M_ptr(__p), _M_refcount(__p, std::move(__d), std::move(__a)) 900171: { 900171: static_assert(__is_invocable<_Deleter&, _Yp*&>::value, 900171: "deleter expression d(p) is well-formed"); 900171: _M_enable_shared_from_this_with(__p); 900171: } 900171: 900171: template 900171: __shared_ptr(nullptr_t __p, _Deleter __d) 900171: : _M_ptr(0), _M_refcount(__p, std::move(__d)) 900171: { } 900171: 900171: template 900171: __shared_ptr(nullptr_t __p, _Deleter __d, _Alloc __a) 900171: : _M_ptr(0), _M_refcount(__p, std::move(__d), std::move(__a)) 900171: { } 900171: 900171: 900171: template 900171: __shared_ptr(const __shared_ptr<_Yp, _Lp>& __r, 900171: element_type* __p) noexcept 900171: : _M_ptr(__p), _M_refcount(__r._M_refcount) 900171: { } 900171: 900171: 900171: template 900171: __shared_ptr(__shared_ptr<_Yp, _Lp>&& __r, 900171: element_type* __p) noexcept 900171: : _M_ptr(__p), _M_refcount() 900171: { 900171: _M_refcount._M_swap(__r._M_refcount); 900171: __r._M_ptr = nullptr; 900171: } 900171: 900171: __shared_ptr(const __shared_ptr&) noexcept = default; 900171: __shared_ptr& operator=(const __shared_ptr&) noexcept = default; 900171: ~__shared_ptr() = default; 900171: 900171: template> 900171: __shared_ptr(const __shared_ptr<_Yp, _Lp>& __r) noexcept 900171: : _M_ptr(__r._M_ptr), _M_refcount(__r._M_refcount) 900171: { } 900171: 900171: __shared_ptr(__shared_ptr&& __r) noexcept 900171: : _M_ptr(__r._M_ptr), _M_refcount() 900171: { 900171: _M_refcount._M_swap(__r._M_refcount); 900171: __r._M_ptr = nullptr; 900171: } 900171: 900171: template> 900171: __shared_ptr(__shared_ptr<_Yp, _Lp>&& __r) noexcept 900171: : _M_ptr(__r._M_ptr), _M_refcount() 900171: { 900171: _M_refcount._M_swap(__r._M_refcount); 900171: __r._M_ptr = nullptr; 900171: } 900171: 900171: template> 900171: explicit __shared_ptr(const __weak_ptr<_Yp, _Lp>& __r) 900171: : _M_refcount(__r._M_refcount) 900171: { 900171: 900171: 900171: _M_ptr = __r._M_ptr; 900171: } 900171: 900171: 900171: template> 900171: __shared_ptr(unique_ptr<_Yp, _Del>&& __r) 900171: : _M_ptr(__r.get()), _M_refcount() 900171: { 900171: auto __raw = __to_address(__r.get()); 900171: _M_refcount = __shared_count<_Lp>(std::move(__r)); 900171: _M_enable_shared_from_this_with(__raw); 900171: } 900171: 900171: 900171: protected: 900171: 900171: template>, is_array<_Tp1>, 900171: is_convertible::pointer, _Tp*> 900171: >::value, bool>::type = true> 900171: __shared_ptr(unique_ptr<_Tp1, _Del>&& __r, __sp_array_delete) 900171: : _M_ptr(__r.get()), _M_refcount() 900171: { 900171: auto __raw = __to_address(__r.get()); 900171: _M_refcount = __shared_count<_Lp>(std::move(__r)); 900171: _M_enable_shared_from_this_with(__raw); 900171: } 900171: public: 900171: 900171: 900171: 900171: #pragma GCC diagnostic push 900171: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 900171: 900171: template> 900171: __shared_ptr(auto_ptr<_Yp>&& __r); 900171: #pragma GCC diagnostic pop 900171: 900171: 900171: constexpr __shared_ptr(nullptr_t) noexcept : __shared_ptr() { } 900171: 900171: template 900171: _Assignable<_Yp> 900171: operator=(const __shared_ptr<_Yp, _Lp>& __r) noexcept 900171: { 900171: _M_ptr = __r._M_ptr; 900171: _M_refcount = __r._M_refcount; 900171: return *this; 900171: } 900171: 900171: 900171: #pragma GCC diagnostic push 900171: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 900171: template 900171: _Assignable<_Yp> 900171: operator=(auto_ptr<_Yp>&& __r) 900171: { 900171: __shared_ptr(std::move(__r)).swap(*this); 900171: return *this; 900171: } 900171: #pragma GCC diagnostic pop 900171: 900171: 900171: __shared_ptr& 900171: operator=(__shared_ptr&& __r) noexcept 900171: { 900171: __shared_ptr(std::move(__r)).swap(*this); 900171: return *this; 900171: } 900171: 900171: template 900171: _Assignable<_Yp> 900171: operator=(__shared_ptr<_Yp, _Lp>&& __r) noexcept 900171: { 900171: __shared_ptr(std::move(__r)).swap(*this); 900171: return *this; 900171: } 900171: 900171: template 900171: _UniqAssignable<_Yp, _Del> 900171: operator=(unique_ptr<_Yp, _Del>&& __r) 900171: { 900171: __shared_ptr(std::move(__r)).swap(*this); 900171: return *this; 900171: } 900171: 900171: void 900171: reset() noexcept 900171: { __shared_ptr().swap(*this); } 900171: 900171: template 900171: _SafeConv<_Yp> 900171: reset(_Yp* __p) 900171: { 900171: 900171: do { if (std::__is_constant_evaluated() && !bool(__p == nullptr || __p != _M_ptr)) __builtin_unreachable(); } while (false); 900171: __shared_ptr(__p).swap(*this); 900171: } 900171: 900171: template 900171: _SafeConv<_Yp> 900171: reset(_Yp* __p, _Deleter __d) 900171: { __shared_ptr(__p, std::move(__d)).swap(*this); } 900171: 900171: template 900171: _SafeConv<_Yp> 900171: reset(_Yp* __p, _Deleter __d, _Alloc __a) 900171: { __shared_ptr(__p, std::move(__d), std::move(__a)).swap(*this); } 900171: 900171: 900171: element_type* 900171: get() const noexcept 900171: { return _M_ptr; } 900171: 900171: 900171: explicit operator bool() const noexcept 900171: { return _M_ptr != nullptr; } 900171: 900171: 900171: bool 900171: unique() const noexcept 900171: { return _M_refcount._M_unique(); } 900171: 900171: 900171: long 900171: use_count() const noexcept 900171: { return _M_refcount._M_get_use_count(); } 900171: 900171: 900171: void 900171: swap(__shared_ptr<_Tp, _Lp>& __other) noexcept 900171: { 900171: std::swap(_M_ptr, __other._M_ptr); 900171: _M_refcount._M_swap(__other._M_refcount); 900171: } 900171: # 1697 "/usr/aarch64-linux-gnu/include/c++/12/bits/shared_ptr_base.h" 3 900171: template 900171: bool 900171: owner_before(__shared_ptr<_Tp1, _Lp> const& __rhs) const noexcept 900171: { return _M_refcount._M_less(__rhs._M_refcount); } 900171: 900171: template 900171: bool 900171: owner_before(__weak_ptr<_Tp1, _Lp> const& __rhs) const noexcept 900171: { return _M_refcount._M_less(__rhs._M_refcount); } 900171: 900171: 900171: protected: 900171: 900171: template 900171: __shared_ptr(_Sp_alloc_shared_tag<_Alloc> __tag, _Args&&... __args) 900171: : _M_ptr(), _M_refcount(_M_ptr, __tag, std::forward<_Args>(__args)...) 900171: { _M_enable_shared_from_this_with(_M_ptr); } 900171: 900171: template 900171: friend __shared_ptr<_Tp1, _Lp1> 900171: __allocate_shared(const _Alloc& __a, _Args&&... __args); 900171: # 1731 "/usr/aarch64-linux-gnu/include/c++/12/bits/shared_ptr_base.h" 3 900171: __shared_ptr(const __weak_ptr<_Tp, _Lp>& __r, std::nothrow_t) noexcept 900171: : _M_refcount(__r._M_refcount, std::nothrow) 900171: { 900171: _M_ptr = _M_refcount._M_get_use_count() ? __r._M_ptr : nullptr; 900171: } 900171: 900171: friend class __weak_ptr<_Tp, _Lp>; 900171: 900171: private: 900171: 900171: template 900171: using __esft_base_t = decltype(__enable_shared_from_this_base( 900171: std::declval&>(), 900171: std::declval<_Yp*>())); 900171: 900171: 900171: template 900171: struct __has_esft_base 900171: : false_type { }; 900171: 900171: template 900171: struct __has_esft_base<_Yp, __void_t<__esft_base_t<_Yp>>> 900171: : __not_> { }; 900171: 900171: template::type> 900171: typename enable_if<__has_esft_base<_Yp2>::value>::type 900171: _M_enable_shared_from_this_with(_Yp* __p) noexcept 900171: { 900171: if (auto __base = __enable_shared_from_this_base(_M_refcount, __p)) 900171: __base->_M_weak_assign(const_cast<_Yp2*>(__p), _M_refcount); 900171: } 900171: 900171: template::type> 900171: typename enable_if::value>::type 900171: _M_enable_shared_from_this_with(_Yp*) noexcept 900171: { } 900171: 900171: void* 900171: _M_get_deleter(const std::type_info& __ti) const noexcept 900171: { return _M_refcount._M_get_deleter(__ti); } 900171: 900171: template friend class __shared_ptr; 900171: template friend class __weak_ptr; 900171: 900171: template 900171: friend _Del* get_deleter(const __shared_ptr<_Tp1, _Lp1>&) noexcept; 900171: 900171: template 900171: friend _Del* get_deleter(const shared_ptr<_Tp1>&) noexcept; 900171: 900171: 900171: 900171: 900171: 900171: element_type* _M_ptr; 900171: __shared_count<_Lp> _M_refcount; 900171: }; 900171: 900171: 900171: 900171: template 900171: inline bool 900171: operator==(const __shared_ptr<_Tp1, _Lp>& __a, 900171: const __shared_ptr<_Tp2, _Lp>& __b) noexcept 900171: { return __a.get() == __b.get(); } 900171: 900171: template 900171: inline bool 900171: operator==(const __shared_ptr<_Tp, _Lp>& __a, nullptr_t) noexcept 900171: { return !__a; } 900171: # 1817 "/usr/aarch64-linux-gnu/include/c++/12/bits/shared_ptr_base.h" 3 900171: template 900171: inline bool 900171: operator==(nullptr_t, const __shared_ptr<_Tp, _Lp>& __a) noexcept 900171: { return !__a; } 900171: 900171: template 900171: inline bool 900171: operator!=(const __shared_ptr<_Tp1, _Lp>& __a, 900171: const __shared_ptr<_Tp2, _Lp>& __b) noexcept 900171: { return __a.get() != __b.get(); } 900171: 900171: template 900171: inline bool 900171: operator!=(const __shared_ptr<_Tp, _Lp>& __a, nullptr_t) noexcept 900171: { return (bool)__a; } 900171: 900171: template 900171: inline bool 900171: operator!=(nullptr_t, const __shared_ptr<_Tp, _Lp>& __a) noexcept 900171: { return (bool)__a; } 900171: 900171: template 900171: inline bool 900171: operator<(const __shared_ptr<_Tp, _Lp>& __a, 900171: const __shared_ptr<_Up, _Lp>& __b) noexcept 900171: { 900171: using _Tp_elt = typename __shared_ptr<_Tp, _Lp>::element_type; 900171: using _Up_elt = typename __shared_ptr<_Up, _Lp>::element_type; 900171: using _Vp = typename common_type<_Tp_elt*, _Up_elt*>::type; 900171: return less<_Vp>()(__a.get(), __b.get()); 900171: } 900171: 900171: template 900171: inline bool 900171: operator<(const __shared_ptr<_Tp, _Lp>& __a, nullptr_t) noexcept 900171: { 900171: using _Tp_elt = typename __shared_ptr<_Tp, _Lp>::element_type; 900171: return less<_Tp_elt*>()(__a.get(), nullptr); 900171: } 900171: 900171: template 900171: inline bool 900171: operator<(nullptr_t, const __shared_ptr<_Tp, _Lp>& __a) noexcept 900171: { 900171: using _Tp_elt = typename __shared_ptr<_Tp, _Lp>::element_type; 900171: return less<_Tp_elt*>()(nullptr, __a.get()); 900171: } 900171: 900171: template 900171: inline bool 900171: operator<=(const __shared_ptr<_Tp1, _Lp>& __a, 900171: const __shared_ptr<_Tp2, _Lp>& __b) noexcept 900171: { return !(__b < __a); } 900171: 900171: template 900171: inline bool 900171: operator<=(const __shared_ptr<_Tp, _Lp>& __a, nullptr_t) noexcept 900171: { return !(nullptr < __a); } 900171: 900171: template 900171: inline bool 900171: operator<=(nullptr_t, const __shared_ptr<_Tp, _Lp>& __a) noexcept 900171: { return !(__a < nullptr); } 900171: 900171: template 900171: inline bool 900171: operator>(const __shared_ptr<_Tp1, _Lp>& __a, 900171: const __shared_ptr<_Tp2, _Lp>& __b) noexcept 900171: { return (__b < __a); } 900171: 900171: template 900171: inline bool 900171: operator>(const __shared_ptr<_Tp, _Lp>& __a, nullptr_t) noexcept 900171: { return nullptr < __a; } 900171: 900171: template 900171: inline bool 900171: operator>(nullptr_t, const __shared_ptr<_Tp, _Lp>& __a) noexcept 900171: { return __a < nullptr; } 900171: 900171: template 900171: inline bool 900171: operator>=(const __shared_ptr<_Tp1, _Lp>& __a, 900171: const __shared_ptr<_Tp2, _Lp>& __b) noexcept 900171: { return !(__a < __b); } 900171: 900171: template 900171: inline bool 900171: operator>=(const __shared_ptr<_Tp, _Lp>& __a, nullptr_t) noexcept 900171: { return !(__a < nullptr); } 900171: 900171: template 900171: inline bool 900171: operator>=(nullptr_t, const __shared_ptr<_Tp, _Lp>& __a) noexcept 900171: { return !(nullptr < __a); } 900171: 900171: 900171: 900171: template 900171: inline void 900171: swap(__shared_ptr<_Tp, _Lp>& __a, __shared_ptr<_Tp, _Lp>& __b) noexcept 900171: { __a.swap(__b); } 900171: # 1927 "/usr/aarch64-linux-gnu/include/c++/12/bits/shared_ptr_base.h" 3 900171: template 900171: inline __shared_ptr<_Tp, _Lp> 900171: static_pointer_cast(const __shared_ptr<_Tp1, _Lp>& __r) noexcept 900171: { 900171: using _Sp = __shared_ptr<_Tp, _Lp>; 900171: return _Sp(__r, static_cast(__r.get())); 900171: } 900171: 900171: 900171: 900171: 900171: 900171: 900171: template 900171: inline __shared_ptr<_Tp, _Lp> 900171: const_pointer_cast(const __shared_ptr<_Tp1, _Lp>& __r) noexcept 900171: { 900171: using _Sp = __shared_ptr<_Tp, _Lp>; 900171: return _Sp(__r, const_cast(__r.get())); 900171: } 900171: 900171: 900171: 900171: 900171: 900171: 900171: template 900171: inline __shared_ptr<_Tp, _Lp> 900171: dynamic_pointer_cast(const __shared_ptr<_Tp1, _Lp>& __r) noexcept 900171: { 900171: using _Sp = __shared_ptr<_Tp, _Lp>; 900171: if (auto* __p = dynamic_cast(__r.get())) 900171: return _Sp(__r, __p); 900171: return _Sp(); 900171: } 900171: # 1973 "/usr/aarch64-linux-gnu/include/c++/12/bits/shared_ptr_base.h" 3 900171: template 900171: class __weak_ptr 900171: { 900171: template 900171: using _Compatible = typename 900171: enable_if<__sp_compatible_with<_Yp*, _Tp*>::value, _Res>::type; 900171: 900171: 900171: template 900171: using _Assignable = _Compatible<_Yp, __weak_ptr&>; 900171: 900171: public: 900171: using element_type = typename remove_extent<_Tp>::type; 900171: 900171: constexpr __weak_ptr() noexcept 900171: : _M_ptr(nullptr), _M_refcount() 900171: { } 900171: 900171: __weak_ptr(const __weak_ptr&) noexcept = default; 900171: 900171: ~__weak_ptr() = default; 900171: # 2009 "/usr/aarch64-linux-gnu/include/c++/12/bits/shared_ptr_base.h" 3 900171: template> 900171: __weak_ptr(const __weak_ptr<_Yp, _Lp>& __r) noexcept 900171: : _M_refcount(__r._M_refcount) 900171: { _M_ptr = __r.lock().get(); } 900171: 900171: template> 900171: __weak_ptr(const __shared_ptr<_Yp, _Lp>& __r) noexcept 900171: : _M_ptr(__r._M_ptr), _M_refcount(__r._M_refcount) 900171: { } 900171: 900171: __weak_ptr(__weak_ptr&& __r) noexcept 900171: : _M_ptr(__r._M_ptr), _M_refcount(std::move(__r._M_refcount)) 900171: { __r._M_ptr = nullptr; } 900171: 900171: template> 900171: __weak_ptr(__weak_ptr<_Yp, _Lp>&& __r) noexcept 900171: : _M_ptr(__r.lock().get()), _M_refcount(std::move(__r._M_refcount)) 900171: { __r._M_ptr = nullptr; } 900171: 900171: __weak_ptr& 900171: operator=(const __weak_ptr& __r) noexcept = default; 900171: 900171: template 900171: _Assignable<_Yp> 900171: operator=(const __weak_ptr<_Yp, _Lp>& __r) noexcept 900171: { 900171: _M_ptr = __r.lock().get(); 900171: _M_refcount = __r._M_refcount; 900171: return *this; 900171: } 900171: 900171: template 900171: _Assignable<_Yp> 900171: operator=(const __shared_ptr<_Yp, _Lp>& __r) noexcept 900171: { 900171: _M_ptr = __r._M_ptr; 900171: _M_refcount = __r._M_refcount; 900171: return *this; 900171: } 900171: 900171: __weak_ptr& 900171: operator=(__weak_ptr&& __r) noexcept 900171: { 900171: _M_ptr = __r._M_ptr; 900171: _M_refcount = std::move(__r._M_refcount); 900171: __r._M_ptr = nullptr; 900171: return *this; 900171: } 900171: 900171: template 900171: _Assignable<_Yp> 900171: operator=(__weak_ptr<_Yp, _Lp>&& __r) noexcept 900171: { 900171: _M_ptr = __r.lock().get(); 900171: _M_refcount = std::move(__r._M_refcount); 900171: __r._M_ptr = nullptr; 900171: return *this; 900171: } 900171: 900171: __shared_ptr<_Tp, _Lp> 900171: lock() const noexcept 900171: { return __shared_ptr(*this, std::nothrow); } 900171: 900171: long 900171: use_count() const noexcept 900171: { return _M_refcount._M_get_use_count(); } 900171: 900171: bool 900171: expired() const noexcept 900171: { return _M_refcount._M_get_use_count() == 0; } 900171: 900171: template 900171: bool 900171: owner_before(const __shared_ptr<_Tp1, _Lp>& __rhs) const noexcept 900171: { return _M_refcount._M_less(__rhs._M_refcount); } 900171: 900171: template 900171: bool 900171: owner_before(const __weak_ptr<_Tp1, _Lp>& __rhs) const noexcept 900171: { return _M_refcount._M_less(__rhs._M_refcount); } 900171: 900171: void 900171: reset() noexcept 900171: { __weak_ptr().swap(*this); } 900171: 900171: void 900171: swap(__weak_ptr& __s) noexcept 900171: { 900171: std::swap(_M_ptr, __s._M_ptr); 900171: _M_refcount._M_swap(__s._M_refcount); 900171: } 900171: 900171: private: 900171: 900171: void 900171: _M_assign(_Tp* __ptr, const __shared_count<_Lp>& __refcount) noexcept 900171: { 900171: if (use_count() == 0) 900171: { 900171: _M_ptr = __ptr; 900171: _M_refcount = __refcount; 900171: } 900171: } 900171: 900171: template friend class __shared_ptr; 900171: template friend class __weak_ptr; 900171: friend class __enable_shared_from_this<_Tp, _Lp>; 900171: friend class enable_shared_from_this<_Tp>; 900171: 900171: 900171: 900171: 900171: element_type* _M_ptr; 900171: __weak_count<_Lp> _M_refcount; 900171: }; 900171: 900171: 900171: template 900171: inline void 900171: swap(__weak_ptr<_Tp, _Lp>& __a, __weak_ptr<_Tp, _Lp>& __b) noexcept 900171: { __a.swap(__b); } 900171: 900171: #pragma GCC diagnostic push 900171: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 900171: template 900171: struct _Sp_owner_less : public binary_function<_Tp, _Tp, bool> 900171: { 900171: bool 900171: operator()(const _Tp& __lhs, const _Tp& __rhs) const noexcept 900171: { return __lhs.owner_before(__rhs); } 900171: 900171: bool 900171: operator()(const _Tp& __lhs, const _Tp1& __rhs) const noexcept 900171: { return __lhs.owner_before(__rhs); } 900171: 900171: bool 900171: operator()(const _Tp1& __lhs, const _Tp& __rhs) const noexcept 900171: { return __lhs.owner_before(__rhs); } 900171: }; 900171: #pragma GCC diagnostic pop 900171: 900171: template<> 900171: struct _Sp_owner_less 900171: { 900171: template 900171: auto 900171: operator()(const _Tp& __lhs, const _Up& __rhs) const noexcept 900171: -> decltype(__lhs.owner_before(__rhs)) 900171: { return __lhs.owner_before(__rhs); } 900171: 900171: using is_transparent = void; 900171: }; 900171: 900171: template 900171: struct owner_less<__shared_ptr<_Tp, _Lp>> 900171: : public _Sp_owner_less<__shared_ptr<_Tp, _Lp>, __weak_ptr<_Tp, _Lp>> 900171: { }; 900171: 900171: template 900171: struct owner_less<__weak_ptr<_Tp, _Lp>> 900171: : public _Sp_owner_less<__weak_ptr<_Tp, _Lp>, __shared_ptr<_Tp, _Lp>> 900171: { }; 900171: 900171: 900171: template 900171: class __enable_shared_from_this 900171: { 900171: protected: 900171: constexpr __enable_shared_from_this() noexcept { } 900171: 900171: __enable_shared_from_this(const __enable_shared_from_this&) noexcept { } 900171: 900171: __enable_shared_from_this& 900171: operator=(const __enable_shared_from_this&) noexcept 900171: { return *this; } 900171: 900171: ~__enable_shared_from_this() { } 900171: 900171: public: 900171: __shared_ptr<_Tp, _Lp> 900171: shared_from_this() 900171: { return __shared_ptr<_Tp, _Lp>(this->_M_weak_this); } 900171: 900171: __shared_ptr 900171: shared_from_this() const 900171: { return __shared_ptr(this->_M_weak_this); } 900171: # 2206 "/usr/aarch64-linux-gnu/include/c++/12/bits/shared_ptr_base.h" 3 900171: private: 900171: template 900171: void 900171: _M_weak_assign(_Tp1* __p, const __shared_count<_Lp>& __n) const noexcept 900171: { _M_weak_this._M_assign(__p, __n); } 900171: 900171: friend const __enable_shared_from_this* 900171: __enable_shared_from_this_base(const __shared_count<_Lp>&, 900171: const __enable_shared_from_this* __p) 900171: { return __p; } 900171: 900171: template 900171: friend class __shared_ptr; 900171: 900171: mutable __weak_ptr<_Tp, _Lp> _M_weak_this; 900171: }; 900171: 900171: template 900171: inline __shared_ptr<_Tp, _Lp> 900171: __allocate_shared(const _Alloc& __a, _Args&&... __args) 900171: { 900171: static_assert(!is_array<_Tp>::value, "make_shared not supported"); 900171: 900171: return __shared_ptr<_Tp, _Lp>(_Sp_alloc_shared_tag<_Alloc>{__a}, 900171: std::forward<_Args>(__args)...); 900171: } 900171: 900171: template 900171: inline __shared_ptr<_Tp, _Lp> 900171: __make_shared(_Args&&... __args) 900171: { 900171: typedef typename std::remove_const<_Tp>::type _Tp_nc; 900171: return std::__allocate_shared<_Tp, _Lp>(std::allocator<_Tp_nc>(), 900171: std::forward<_Args>(__args)...); 900171: } 900171: 900171: 900171: template 900171: struct hash<__shared_ptr<_Tp, _Lp>> 900171: : public __hash_base> 900171: { 900171: size_t 900171: operator()(const __shared_ptr<_Tp, _Lp>& __s) const noexcept 900171: { 900171: return hash::element_type*>()( 900171: __s.get()); 900171: } 900171: }; 900171: 900171: 900171: } 900171: # 54 "/usr/aarch64-linux-gnu/include/c++/12/bits/shared_ptr.h" 2 3 900171: 900171: namespace std __attribute__ ((__visibility__ ("default"))) 900171: { 900171: 900171: # 68 "/usr/aarch64-linux-gnu/include/c++/12/bits/shared_ptr.h" 3 900171: template 900171: inline std::basic_ostream<_Ch, _Tr>& 900171: operator<<(std::basic_ostream<_Ch, _Tr>& __os, 900171: const __shared_ptr<_Tp, _Lp>& __p) 900171: { 900171: __os << __p.get(); 900171: return __os; 900171: } 900171: 900171: template 900171: inline _Del* 900171: get_deleter(const __shared_ptr<_Tp, _Lp>& __p) noexcept 900171: { 900171: 900171: return static_cast<_Del*>(__p._M_get_deleter(typeid(_Del))); 900171: 900171: 900171: 900171: } 900171: 900171: 900171: 900171: 900171: 900171: template 900171: inline _Del* 900171: get_deleter(const shared_ptr<_Tp>& __p) noexcept 900171: { 900171: 900171: return static_cast<_Del*>(__p._M_get_deleter(typeid(_Del))); 900171: 900171: 900171: 900171: } 900171: # 111 "/usr/aarch64-linux-gnu/include/c++/12/bits/shared_ptr.h" 3 900171: template 900171: using _NonArray = __enable_if_t::value, _Tp>; 900171: # 174 "/usr/aarch64-linux-gnu/include/c++/12/bits/shared_ptr.h" 3 900171: template 900171: class shared_ptr : public __shared_ptr<_Tp> 900171: { 900171: template 900171: using _Constructible = typename enable_if< 900171: is_constructible<__shared_ptr<_Tp>, _Args...>::value 900171: >::type; 900171: 900171: template 900171: using _Assignable = typename enable_if< 900171: is_assignable<__shared_ptr<_Tp>&, _Arg>::value, shared_ptr& 900171: >::type; 900171: 900171: public: 900171: 900171: 900171: using element_type = typename __shared_ptr<_Tp>::element_type; 900171: # 202 "/usr/aarch64-linux-gnu/include/c++/12/bits/shared_ptr.h" 3 900171: constexpr shared_ptr() noexcept : __shared_ptr<_Tp>() { } 900171: 900171: shared_ptr(const shared_ptr&) noexcept = default; 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: template> 900171: explicit 900171: shared_ptr(_Yp* __p) : __shared_ptr<_Tp>(__p) { } 900171: # 229 "/usr/aarch64-linux-gnu/include/c++/12/bits/shared_ptr.h" 3 900171: template> 900171: shared_ptr(_Yp* __p, _Deleter __d) 900171: : __shared_ptr<_Tp>(__p, std::move(__d)) { } 900171: # 247 "/usr/aarch64-linux-gnu/include/c++/12/bits/shared_ptr.h" 3 900171: template 900171: shared_ptr(nullptr_t __p, _Deleter __d) 900171: : __shared_ptr<_Tp>(__p, std::move(__d)) { } 900171: # 266 "/usr/aarch64-linux-gnu/include/c++/12/bits/shared_ptr.h" 3 900171: template> 900171: shared_ptr(_Yp* __p, _Deleter __d, _Alloc __a) 900171: : __shared_ptr<_Tp>(__p, std::move(__d), std::move(__a)) { } 900171: # 286 "/usr/aarch64-linux-gnu/include/c++/12/bits/shared_ptr.h" 3 900171: template 900171: shared_ptr(nullptr_t __p, _Deleter __d, _Alloc __a) 900171: : __shared_ptr<_Tp>(__p, std::move(__d), std::move(__a)) { } 900171: # 310 "/usr/aarch64-linux-gnu/include/c++/12/bits/shared_ptr.h" 3 900171: template 900171: shared_ptr(const shared_ptr<_Yp>& __r, element_type* __p) noexcept 900171: : __shared_ptr<_Tp>(__r, __p) { } 900171: # 349 "/usr/aarch64-linux-gnu/include/c++/12/bits/shared_ptr.h" 3 900171: template&>> 900171: shared_ptr(const shared_ptr<_Yp>& __r) noexcept 900171: : __shared_ptr<_Tp>(__r) { } 900171: 900171: 900171: 900171: 900171: 900171: 900171: shared_ptr(shared_ptr&& __r) noexcept 900171: : __shared_ptr<_Tp>(std::move(__r)) { } 900171: 900171: 900171: 900171: 900171: 900171: 900171: template>> 900171: shared_ptr(shared_ptr<_Yp>&& __r) noexcept 900171: : __shared_ptr<_Tp>(std::move(__r)) { } 900171: # 379 "/usr/aarch64-linux-gnu/include/c++/12/bits/shared_ptr.h" 3 900171: template&>> 900171: explicit shared_ptr(const weak_ptr<_Yp>& __r) 900171: : __shared_ptr<_Tp>(__r) { } 900171: 900171: 900171: #pragma GCC diagnostic push 900171: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 900171: template>> 900171: shared_ptr(auto_ptr<_Yp>&& __r); 900171: #pragma GCC diagnostic pop 900171: 900171: 900171: 900171: 900171: template>> 900171: shared_ptr(unique_ptr<_Yp, _Del>&& __r) 900171: : __shared_ptr<_Tp>(std::move(__r)) { } 900171: 900171: 900171: 900171: 900171: 900171: template, __sp_array_delete>* = 0> 900171: shared_ptr(unique_ptr<_Yp, _Del>&& __r) 900171: : __shared_ptr<_Tp>(std::move(__r), __sp_array_delete()) { } 900171: 900171: 900171: 900171: 900171: 900171: 900171: constexpr shared_ptr(nullptr_t) noexcept : shared_ptr() { } 900171: 900171: shared_ptr& operator=(const shared_ptr&) noexcept = default; 900171: 900171: template 900171: _Assignable&> 900171: operator=(const shared_ptr<_Yp>& __r) noexcept 900171: { 900171: this->__shared_ptr<_Tp>::operator=(__r); 900171: return *this; 900171: } 900171: 900171: 900171: #pragma GCC diagnostic push 900171: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 900171: template 900171: _Assignable> 900171: operator=(auto_ptr<_Yp>&& __r) 900171: { 900171: this->__shared_ptr<_Tp>::operator=(std::move(__r)); 900171: return *this; 900171: } 900171: #pragma GCC diagnostic pop 900171: 900171: 900171: shared_ptr& 900171: operator=(shared_ptr&& __r) noexcept 900171: { 900171: this->__shared_ptr<_Tp>::operator=(std::move(__r)); 900171: return *this; 900171: } 900171: 900171: template 900171: _Assignable> 900171: operator=(shared_ptr<_Yp>&& __r) noexcept 900171: { 900171: this->__shared_ptr<_Tp>::operator=(std::move(__r)); 900171: return *this; 900171: } 900171: 900171: template 900171: _Assignable> 900171: operator=(unique_ptr<_Yp, _Del>&& __r) 900171: { 900171: this->__shared_ptr<_Tp>::operator=(std::move(__r)); 900171: return *this; 900171: } 900171: 900171: private: 900171: 900171: template 900171: shared_ptr(_Sp_alloc_shared_tag<_Alloc> __tag, _Args&&... __args) 900171: : __shared_ptr<_Tp>(__tag, std::forward<_Args>(__args)...) 900171: { } 900171: 900171: template 900171: friend shared_ptr<_NonArray<_Yp>> 900171: allocate_shared(const _Alloc&, _Args&&...); 900171: 900171: template 900171: friend shared_ptr<_NonArray<_Yp>> 900171: make_shared(_Args&&...); 900171: # 535 "/usr/aarch64-linux-gnu/include/c++/12/bits/shared_ptr.h" 3 900171: shared_ptr(const weak_ptr<_Tp>& __r, std::nothrow_t) noexcept 900171: : __shared_ptr<_Tp>(__r, std::nothrow) { } 900171: 900171: friend class weak_ptr<_Tp>; 900171: }; 900171: # 553 "/usr/aarch64-linux-gnu/include/c++/12/bits/shared_ptr.h" 3 900171: template 900171: inline bool 900171: operator==(const shared_ptr<_Tp>& __a, const shared_ptr<_Up>& __b) noexcept 900171: { return __a.get() == __b.get(); } 900171: 900171: 900171: template 900171: inline bool 900171: operator==(const shared_ptr<_Tp>& __a, nullptr_t) noexcept 900171: { return !__a; } 900171: # 580 "/usr/aarch64-linux-gnu/include/c++/12/bits/shared_ptr.h" 3 900171: template 900171: inline bool 900171: operator==(nullptr_t, const shared_ptr<_Tp>& __a) noexcept 900171: { return !__a; } 900171: 900171: 900171: template 900171: inline bool 900171: operator!=(const shared_ptr<_Tp>& __a, const shared_ptr<_Up>& __b) noexcept 900171: { return __a.get() != __b.get(); } 900171: 900171: 900171: template 900171: inline bool 900171: operator!=(const shared_ptr<_Tp>& __a, nullptr_t) noexcept 900171: { return (bool)__a; } 900171: 900171: 900171: template 900171: inline bool 900171: operator!=(nullptr_t, const shared_ptr<_Tp>& __a) noexcept 900171: { return (bool)__a; } 900171: 900171: 900171: template 900171: inline bool 900171: operator<(const shared_ptr<_Tp>& __a, const shared_ptr<_Up>& __b) noexcept 900171: { 900171: using _Tp_elt = typename shared_ptr<_Tp>::element_type; 900171: using _Up_elt = typename shared_ptr<_Up>::element_type; 900171: using _Vp = typename common_type<_Tp_elt*, _Up_elt*>::type; 900171: return less<_Vp>()(__a.get(), __b.get()); 900171: } 900171: 900171: 900171: template 900171: inline bool 900171: operator<(const shared_ptr<_Tp>& __a, nullptr_t) noexcept 900171: { 900171: using _Tp_elt = typename shared_ptr<_Tp>::element_type; 900171: return less<_Tp_elt*>()(__a.get(), nullptr); 900171: } 900171: 900171: 900171: template 900171: inline bool 900171: operator<(nullptr_t, const shared_ptr<_Tp>& __a) noexcept 900171: { 900171: using _Tp_elt = typename shared_ptr<_Tp>::element_type; 900171: return less<_Tp_elt*>()(nullptr, __a.get()); 900171: } 900171: 900171: 900171: template 900171: inline bool 900171: operator<=(const shared_ptr<_Tp>& __a, const shared_ptr<_Up>& __b) noexcept 900171: { return !(__b < __a); } 900171: 900171: 900171: template 900171: inline bool 900171: operator<=(const shared_ptr<_Tp>& __a, nullptr_t) noexcept 900171: { return !(nullptr < __a); } 900171: 900171: 900171: template 900171: inline bool 900171: operator<=(nullptr_t, const shared_ptr<_Tp>& __a) noexcept 900171: { return !(__a < nullptr); } 900171: 900171: 900171: template 900171: inline bool 900171: operator>(const shared_ptr<_Tp>& __a, const shared_ptr<_Up>& __b) noexcept 900171: { return (__b < __a); } 900171: 900171: 900171: template 900171: inline bool 900171: operator>(const shared_ptr<_Tp>& __a, nullptr_t) noexcept 900171: { return nullptr < __a; } 900171: 900171: 900171: template 900171: inline bool 900171: operator>(nullptr_t, const shared_ptr<_Tp>& __a) noexcept 900171: { return __a < nullptr; } 900171: 900171: 900171: template 900171: inline bool 900171: operator>=(const shared_ptr<_Tp>& __a, const shared_ptr<_Up>& __b) noexcept 900171: { return !(__a < __b); } 900171: 900171: 900171: template 900171: inline bool 900171: operator>=(const shared_ptr<_Tp>& __a, nullptr_t) noexcept 900171: { return !(__a < nullptr); } 900171: 900171: 900171: template 900171: inline bool 900171: operator>=(nullptr_t, const shared_ptr<_Tp>& __a) noexcept 900171: { return !(nullptr < __a); } 900171: 900171: 900171: 900171: 900171: 900171: template 900171: inline void 900171: swap(shared_ptr<_Tp>& __a, shared_ptr<_Tp>& __b) noexcept 900171: { __a.swap(__b); } 900171: 900171: 900171: 900171: 900171: template 900171: inline shared_ptr<_Tp> 900171: static_pointer_cast(const shared_ptr<_Up>& __r) noexcept 900171: { 900171: using _Sp = shared_ptr<_Tp>; 900171: return _Sp(__r, static_cast(__r.get())); 900171: } 900171: 900171: 900171: template 900171: inline shared_ptr<_Tp> 900171: const_pointer_cast(const shared_ptr<_Up>& __r) noexcept 900171: { 900171: using _Sp = shared_ptr<_Tp>; 900171: return _Sp(__r, const_cast(__r.get())); 900171: } 900171: 900171: 900171: template 900171: inline shared_ptr<_Tp> 900171: dynamic_pointer_cast(const shared_ptr<_Up>& __r) noexcept 900171: { 900171: using _Sp = shared_ptr<_Tp>; 900171: if (auto* __p = dynamic_cast(__r.get())) 900171: return _Sp(__r, __p); 900171: return _Sp(); 900171: } 900171: # 810 "/usr/aarch64-linux-gnu/include/c++/12/bits/shared_ptr.h" 3 900171: template 900171: class weak_ptr : public __weak_ptr<_Tp> 900171: { 900171: template 900171: using _Constructible = typename enable_if< 900171: is_constructible<__weak_ptr<_Tp>, _Arg>::value 900171: >::type; 900171: 900171: template 900171: using _Assignable = typename enable_if< 900171: is_assignable<__weak_ptr<_Tp>&, _Arg>::value, weak_ptr& 900171: >::type; 900171: 900171: public: 900171: constexpr weak_ptr() noexcept = default; 900171: 900171: template&>> 900171: weak_ptr(const shared_ptr<_Yp>& __r) noexcept 900171: : __weak_ptr<_Tp>(__r) { } 900171: 900171: weak_ptr(const weak_ptr&) noexcept = default; 900171: 900171: template&>> 900171: weak_ptr(const weak_ptr<_Yp>& __r) noexcept 900171: : __weak_ptr<_Tp>(__r) { } 900171: 900171: weak_ptr(weak_ptr&&) noexcept = default; 900171: 900171: template>> 900171: weak_ptr(weak_ptr<_Yp>&& __r) noexcept 900171: : __weak_ptr<_Tp>(std::move(__r)) { } 900171: 900171: weak_ptr& 900171: operator=(const weak_ptr& __r) noexcept = default; 900171: 900171: template 900171: _Assignable&> 900171: operator=(const weak_ptr<_Yp>& __r) noexcept 900171: { 900171: this->__weak_ptr<_Tp>::operator=(__r); 900171: return *this; 900171: } 900171: 900171: template 900171: _Assignable&> 900171: operator=(const shared_ptr<_Yp>& __r) noexcept 900171: { 900171: this->__weak_ptr<_Tp>::operator=(__r); 900171: return *this; 900171: } 900171: 900171: weak_ptr& 900171: operator=(weak_ptr&& __r) noexcept = default; 900171: 900171: template 900171: _Assignable> 900171: operator=(weak_ptr<_Yp>&& __r) noexcept 900171: { 900171: this->__weak_ptr<_Tp>::operator=(std::move(__r)); 900171: return *this; 900171: } 900171: 900171: shared_ptr<_Tp> 900171: lock() const noexcept 900171: { return shared_ptr<_Tp>(*this, std::nothrow); } 900171: }; 900171: # 886 "/usr/aarch64-linux-gnu/include/c++/12/bits/shared_ptr.h" 3 900171: template 900171: inline void 900171: swap(weak_ptr<_Tp>& __a, weak_ptr<_Tp>& __b) noexcept 900171: { __a.swap(__b); } 900171: 900171: 900171: 900171: template 900171: struct owner_less; 900171: 900171: 900171: template<> 900171: struct owner_less : _Sp_owner_less 900171: { }; 900171: 900171: 900171: template 900171: struct owner_less> 900171: : public _Sp_owner_less, weak_ptr<_Tp>> 900171: { }; 900171: 900171: 900171: template 900171: struct owner_less> 900171: : public _Sp_owner_less, shared_ptr<_Tp>> 900171: { }; 900171: 900171: 900171: 900171: 900171: 900171: 900171: template 900171: class enable_shared_from_this 900171: { 900171: protected: 900171: constexpr enable_shared_from_this() noexcept { } 900171: 900171: enable_shared_from_this(const enable_shared_from_this&) noexcept { } 900171: 900171: enable_shared_from_this& 900171: operator=(const enable_shared_from_this&) noexcept 900171: { return *this; } 900171: 900171: ~enable_shared_from_this() { } 900171: 900171: public: 900171: shared_ptr<_Tp> 900171: shared_from_this() 900171: { return shared_ptr<_Tp>(this->_M_weak_this); } 900171: 900171: shared_ptr 900171: shared_from_this() const 900171: { return shared_ptr(this->_M_weak_this); } 900171: # 957 "/usr/aarch64-linux-gnu/include/c++/12/bits/shared_ptr.h" 3 900171: private: 900171: template 900171: void 900171: _M_weak_assign(_Tp1* __p, const __shared_count<>& __n) const noexcept 900171: { _M_weak_this._M_assign(__p, __n); } 900171: 900171: 900171: friend const enable_shared_from_this* 900171: __enable_shared_from_this_base(const __shared_count<>&, 900171: const enable_shared_from_this* __p) 900171: { return __p; } 900171: 900171: template 900171: friend class __shared_ptr; 900171: 900171: mutable weak_ptr<_Tp> _M_weak_this; 900171: }; 900171: # 988 "/usr/aarch64-linux-gnu/include/c++/12/bits/shared_ptr.h" 3 900171: template 900171: inline shared_ptr<_NonArray<_Tp>> 900171: allocate_shared(const _Alloc& __a, _Args&&... __args) 900171: { 900171: return shared_ptr<_Tp>(_Sp_alloc_shared_tag<_Alloc>{__a}, 900171: std::forward<_Args>(__args)...); 900171: } 900171: # 1003 "/usr/aarch64-linux-gnu/include/c++/12/bits/shared_ptr.h" 3 900171: template 900171: inline shared_ptr<_NonArray<_Tp>> 900171: make_shared(_Args&&... __args) 900171: { 900171: using _Alloc = allocator; 900171: _Alloc __a; 900171: return shared_ptr<_Tp>(_Sp_alloc_shared_tag<_Alloc>{__a}, 900171: std::forward<_Args>(__args)...); 900171: } 900171: # 1152 "/usr/aarch64-linux-gnu/include/c++/12/bits/shared_ptr.h" 3 900171: template 900171: struct hash> 900171: : public __hash_base> 900171: { 900171: size_t 900171: operator()(const shared_ptr<_Tp>& __s) const noexcept 900171: { 900171: return std::hash::element_type*>()(__s.get()); 900171: } 900171: }; 900171: # 1187 "/usr/aarch64-linux-gnu/include/c++/12/bits/shared_ptr.h" 3 900171: 900171: } 900171: # 78 "/usr/aarch64-linux-gnu/include/c++/12/memory" 2 3 900171: # 1 "/usr/aarch64-linux-gnu/include/c++/12/bits/shared_ptr_atomic.h" 1 3 900171: # 33 "/usr/aarch64-linux-gnu/include/c++/12/bits/shared_ptr_atomic.h" 3 900171: # 1 "/usr/aarch64-linux-gnu/include/c++/12/bits/atomic_base.h" 1 3 900171: # 33 "/usr/aarch64-linux-gnu/include/c++/12/bits/atomic_base.h" 3 900171: 900171: # 34 "/usr/aarch64-linux-gnu/include/c++/12/bits/atomic_base.h" 3 900171: 900171: 900171: 900171: # 1 "/usr/aarch64-linux-gnu/include/c++/12/bits/atomic_lockfree_defines.h" 1 3 900171: # 33 "/usr/aarch64-linux-gnu/include/c++/12/bits/atomic_lockfree_defines.h" 3 900171: 900171: # 34 "/usr/aarch64-linux-gnu/include/c++/12/bits/atomic_lockfree_defines.h" 3 900171: # 38 "/usr/aarch64-linux-gnu/include/c++/12/bits/atomic_base.h" 2 3 900171: # 48 "/usr/aarch64-linux-gnu/include/c++/12/bits/atomic_base.h" 3 900171: namespace std __attribute__ ((__visibility__ ("default"))) 900171: { 900171: 900171: # 78 "/usr/aarch64-linux-gnu/include/c++/12/bits/atomic_base.h" 3 900171: typedef enum memory_order 900171: { 900171: memory_order_relaxed, 900171: memory_order_consume, 900171: memory_order_acquire, 900171: memory_order_release, 900171: memory_order_acq_rel, 900171: memory_order_seq_cst 900171: } memory_order; 900171: 900171: 900171: enum __memory_order_modifier 900171: { 900171: __memory_order_mask = 0x0ffff, 900171: __memory_order_modifier_mask = 0xffff0000, 900171: __memory_order_hle_acquire = 0x10000, 900171: __memory_order_hle_release = 0x20000 900171: }; 900171: 900171: constexpr memory_order 900171: operator|(memory_order __m, __memory_order_modifier __mod) 900171: { 900171: return memory_order(int(__m) | int(__mod)); 900171: } 900171: 900171: constexpr memory_order 900171: operator&(memory_order __m, __memory_order_modifier __mod) 900171: { 900171: return memory_order(int(__m) & int(__mod)); 900171: } 900171: 900171: 900171: constexpr memory_order 900171: __cmpexch_failure_order2(memory_order __m) noexcept 900171: { 900171: return __m == memory_order_acq_rel ? memory_order_acquire 900171: : __m == memory_order_release ? memory_order_relaxed : __m; 900171: } 900171: 900171: constexpr memory_order 900171: __cmpexch_failure_order(memory_order __m) noexcept 900171: { 900171: return memory_order(__cmpexch_failure_order2(__m & __memory_order_mask) 900171: | __memory_order_modifier(__m & __memory_order_modifier_mask)); 900171: } 900171: 900171: constexpr bool 900171: __is_valid_cmpexch_failure_order(memory_order __m) noexcept 900171: { 900171: return (__m & __memory_order_mask) != memory_order_release 900171: && (__m & __memory_order_mask) != memory_order_acq_rel; 900171: } 900171: 900171: inline __attribute__((__always_inline__)) void 900171: atomic_thread_fence(memory_order __m) noexcept 900171: { __atomic_thread_fence(int(__m)); } 900171: 900171: inline __attribute__((__always_inline__)) void 900171: atomic_signal_fence(memory_order __m) noexcept 900171: { __atomic_signal_fence(int(__m)); } 900171: 900171: 900171: template 900171: inline _Tp 900171: kill_dependency(_Tp __y) noexcept 900171: { 900171: _Tp __ret(__y); 900171: return __ret; 900171: } 900171: 900171: 900171: template 900171: struct __atomic_base; 900171: # 161 "/usr/aarch64-linux-gnu/include/c++/12/bits/atomic_base.h" 3 900171: template 900171: struct atomic; 900171: 900171: template 900171: struct atomic<_Tp*>; 900171: 900171: 900171: 900171: typedef bool __atomic_flag_data_type; 900171: # 184 "/usr/aarch64-linux-gnu/include/c++/12/bits/atomic_base.h" 3 900171: extern "C" { 900171: 900171: struct __atomic_flag_base 900171: { 900171: __atomic_flag_data_type _M_i ; 900171: }; 900171: 900171: } 900171: 900171: 900171: 900171: 900171: struct atomic_flag : public __atomic_flag_base 900171: { 900171: atomic_flag() noexcept = default; 900171: ~atomic_flag() noexcept = default; 900171: atomic_flag(const atomic_flag&) = delete; 900171: atomic_flag& operator=(const atomic_flag&) = delete; 900171: atomic_flag& operator=(const atomic_flag&) volatile = delete; 900171: 900171: 900171: constexpr atomic_flag(bool __i) noexcept 900171: : __atomic_flag_base{ _S_init(__i) } 900171: { } 900171: 900171: inline __attribute__((__always_inline__)) bool 900171: test_and_set(memory_order __m = memory_order_seq_cst) noexcept 900171: { 900171: return __atomic_test_and_set (&_M_i, int(__m)); 900171: } 900171: 900171: inline __attribute__((__always_inline__)) bool 900171: test_and_set(memory_order __m = memory_order_seq_cst) volatile noexcept 900171: { 900171: return __atomic_test_and_set (&_M_i, int(__m)); 900171: } 900171: # 268 "/usr/aarch64-linux-gnu/include/c++/12/bits/atomic_base.h" 3 900171: inline __attribute__((__always_inline__)) void 900171: clear(memory_order __m = memory_order_seq_cst) noexcept 900171: { 900171: memory_order __b __attribute__ ((__unused__)) 900171: = __m & __memory_order_mask; 900171: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_consume)) __builtin_unreachable(); } while (false); 900171: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_acquire)) __builtin_unreachable(); } while (false); 900171: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_acq_rel)) __builtin_unreachable(); } while (false); 900171: 900171: __atomic_clear (&_M_i, int(__m)); 900171: } 900171: 900171: inline __attribute__((__always_inline__)) void 900171: clear(memory_order __m = memory_order_seq_cst) volatile noexcept 900171: { 900171: memory_order __b __attribute__ ((__unused__)) 900171: = __m & __memory_order_mask; 900171: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_consume)) __builtin_unreachable(); } while (false); 900171: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_acquire)) __builtin_unreachable(); } while (false); 900171: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_acq_rel)) __builtin_unreachable(); } while (false); 900171: 900171: __atomic_clear (&_M_i, int(__m)); 900171: } 900171: 900171: private: 900171: static constexpr __atomic_flag_data_type 900171: _S_init(bool __i) 900171: { return __i ? 1 : 0; } 900171: }; 900171: # 323 "/usr/aarch64-linux-gnu/include/c++/12/bits/atomic_base.h" 3 900171: template 900171: struct __atomic_base 900171: { 900171: using value_type = _ITp; 900171: using difference_type = value_type; 900171: 900171: private: 900171: typedef _ITp __int_type; 900171: 900171: static constexpr int _S_alignment = 900171: sizeof(_ITp) > alignof(_ITp) ? sizeof(_ITp) : alignof(_ITp); 900171: 900171: alignas(_S_alignment) __int_type _M_i ; 900171: 900171: public: 900171: __atomic_base() noexcept = default; 900171: ~__atomic_base() noexcept = default; 900171: __atomic_base(const __atomic_base&) = delete; 900171: __atomic_base& operator=(const __atomic_base&) = delete; 900171: __atomic_base& operator=(const __atomic_base&) volatile = delete; 900171: 900171: 900171: constexpr __atomic_base(__int_type __i) noexcept : _M_i (__i) { } 900171: 900171: operator __int_type() const noexcept 900171: { return load(); } 900171: 900171: operator __int_type() const volatile noexcept 900171: { return load(); } 900171: 900171: __int_type 900171: operator=(__int_type __i) noexcept 900171: { 900171: store(__i); 900171: return __i; 900171: } 900171: 900171: __int_type 900171: operator=(__int_type __i) volatile noexcept 900171: { 900171: store(__i); 900171: return __i; 900171: } 900171: 900171: __int_type 900171: operator++(int) noexcept 900171: { return fetch_add(1); } 900171: 900171: __int_type 900171: operator++(int) volatile noexcept 900171: { return fetch_add(1); } 900171: 900171: __int_type 900171: operator--(int) noexcept 900171: { return fetch_sub(1); } 900171: 900171: __int_type 900171: operator--(int) volatile noexcept 900171: { return fetch_sub(1); } 900171: 900171: __int_type 900171: operator++() noexcept 900171: { return __atomic_add_fetch(&_M_i, 1, int(memory_order_seq_cst)); } 900171: 900171: __int_type 900171: operator++() volatile noexcept 900171: { return __atomic_add_fetch(&_M_i, 1, int(memory_order_seq_cst)); } 900171: 900171: __int_type 900171: operator--() noexcept 900171: { return __atomic_sub_fetch(&_M_i, 1, int(memory_order_seq_cst)); } 900171: 900171: __int_type 900171: operator--() volatile noexcept 900171: { return __atomic_sub_fetch(&_M_i, 1, int(memory_order_seq_cst)); } 900171: 900171: __int_type 900171: operator+=(__int_type __i) noexcept 900171: { return __atomic_add_fetch(&_M_i, __i, int(memory_order_seq_cst)); } 900171: 900171: __int_type 900171: operator+=(__int_type __i) volatile noexcept 900171: { return __atomic_add_fetch(&_M_i, __i, int(memory_order_seq_cst)); } 900171: 900171: __int_type 900171: operator-=(__int_type __i) noexcept 900171: { return __atomic_sub_fetch(&_M_i, __i, int(memory_order_seq_cst)); } 900171: 900171: __int_type 900171: operator-=(__int_type __i) volatile noexcept 900171: { return __atomic_sub_fetch(&_M_i, __i, int(memory_order_seq_cst)); } 900171: 900171: __int_type 900171: operator&=(__int_type __i) noexcept 900171: { return __atomic_and_fetch(&_M_i, __i, int(memory_order_seq_cst)); } 900171: 900171: __int_type 900171: operator&=(__int_type __i) volatile noexcept 900171: { return __atomic_and_fetch(&_M_i, __i, int(memory_order_seq_cst)); } 900171: 900171: __int_type 900171: operator|=(__int_type __i) noexcept 900171: { return __atomic_or_fetch(&_M_i, __i, int(memory_order_seq_cst)); } 900171: 900171: __int_type 900171: operator|=(__int_type __i) volatile noexcept 900171: { return __atomic_or_fetch(&_M_i, __i, int(memory_order_seq_cst)); } 900171: 900171: __int_type 900171: operator^=(__int_type __i) noexcept 900171: { return __atomic_xor_fetch(&_M_i, __i, int(memory_order_seq_cst)); } 900171: 900171: __int_type 900171: operator^=(__int_type __i) volatile noexcept 900171: { return __atomic_xor_fetch(&_M_i, __i, int(memory_order_seq_cst)); } 900171: 900171: bool 900171: is_lock_free() const noexcept 900171: { 900171: 900171: return __atomic_is_lock_free(sizeof(_M_i), 900171: reinterpret_cast(-_S_alignment)); 900171: } 900171: 900171: bool 900171: is_lock_free() const volatile noexcept 900171: { 900171: 900171: return __atomic_is_lock_free(sizeof(_M_i), 900171: reinterpret_cast(-_S_alignment)); 900171: } 900171: 900171: inline __attribute__((__always_inline__)) void 900171: store(__int_type __i, memory_order __m = memory_order_seq_cst) noexcept 900171: { 900171: memory_order __b __attribute__ ((__unused__)) 900171: = __m & __memory_order_mask; 900171: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_acquire)) __builtin_unreachable(); } while (false); 900171: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_acq_rel)) __builtin_unreachable(); } while (false); 900171: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_consume)) __builtin_unreachable(); } while (false); 900171: 900171: __atomic_store_n(&_M_i, __i, int(__m)); 900171: } 900171: 900171: inline __attribute__((__always_inline__)) void 900171: store(__int_type __i, 900171: memory_order __m = memory_order_seq_cst) volatile noexcept 900171: { 900171: memory_order __b __attribute__ ((__unused__)) 900171: = __m & __memory_order_mask; 900171: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_acquire)) __builtin_unreachable(); } while (false); 900171: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_acq_rel)) __builtin_unreachable(); } while (false); 900171: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_consume)) __builtin_unreachable(); } while (false); 900171: 900171: __atomic_store_n(&_M_i, __i, int(__m)); 900171: } 900171: 900171: inline __attribute__((__always_inline__)) __int_type 900171: load(memory_order __m = memory_order_seq_cst) const noexcept 900171: { 900171: memory_order __b __attribute__ ((__unused__)) 900171: = __m & __memory_order_mask; 900171: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_release)) __builtin_unreachable(); } while (false); 900171: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_acq_rel)) __builtin_unreachable(); } while (false); 900171: 900171: return __atomic_load_n(&_M_i, int(__m)); 900171: } 900171: 900171: inline __attribute__((__always_inline__)) __int_type 900171: load(memory_order __m = memory_order_seq_cst) const volatile noexcept 900171: { 900171: memory_order __b __attribute__ ((__unused__)) 900171: = __m & __memory_order_mask; 900171: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_release)) __builtin_unreachable(); } while (false); 900171: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_acq_rel)) __builtin_unreachable(); } while (false); 900171: 900171: return __atomic_load_n(&_M_i, int(__m)); 900171: } 900171: 900171: inline __attribute__((__always_inline__)) __int_type 900171: exchange(__int_type __i, 900171: memory_order __m = memory_order_seq_cst) noexcept 900171: { 900171: return __atomic_exchange_n(&_M_i, __i, int(__m)); 900171: } 900171: 900171: 900171: inline __attribute__((__always_inline__)) __int_type 900171: exchange(__int_type __i, 900171: memory_order __m = memory_order_seq_cst) volatile noexcept 900171: { 900171: return __atomic_exchange_n(&_M_i, __i, int(__m)); 900171: } 900171: 900171: inline __attribute__((__always_inline__)) bool 900171: compare_exchange_weak(__int_type& __i1, __int_type __i2, 900171: memory_order __m1, memory_order __m2) noexcept 900171: { 900171: do { if (std::__is_constant_evaluated() && !bool(__is_valid_cmpexch_failure_order(__m2))) __builtin_unreachable(); } while (false); 900171: 900171: return __atomic_compare_exchange_n(&_M_i, &__i1, __i2, 1, 900171: int(__m1), int(__m2)); 900171: } 900171: 900171: inline __attribute__((__always_inline__)) bool 900171: compare_exchange_weak(__int_type& __i1, __int_type __i2, 900171: memory_order __m1, 900171: memory_order __m2) volatile noexcept 900171: { 900171: do { if (std::__is_constant_evaluated() && !bool(__is_valid_cmpexch_failure_order(__m2))) __builtin_unreachable(); } while (false); 900171: 900171: return __atomic_compare_exchange_n(&_M_i, &__i1, __i2, 1, 900171: int(__m1), int(__m2)); 900171: } 900171: 900171: inline __attribute__((__always_inline__)) bool 900171: compare_exchange_weak(__int_type& __i1, __int_type __i2, 900171: memory_order __m = memory_order_seq_cst) noexcept 900171: { 900171: return compare_exchange_weak(__i1, __i2, __m, 900171: __cmpexch_failure_order(__m)); 900171: } 900171: 900171: inline __attribute__((__always_inline__)) bool 900171: compare_exchange_weak(__int_type& __i1, __int_type __i2, 900171: memory_order __m = memory_order_seq_cst) volatile noexcept 900171: { 900171: return compare_exchange_weak(__i1, __i2, __m, 900171: __cmpexch_failure_order(__m)); 900171: } 900171: 900171: inline __attribute__((__always_inline__)) bool 900171: compare_exchange_strong(__int_type& __i1, __int_type __i2, 900171: memory_order __m1, memory_order __m2) noexcept 900171: { 900171: do { if (std::__is_constant_evaluated() && !bool(__is_valid_cmpexch_failure_order(__m2))) __builtin_unreachable(); } while (false); 900171: 900171: return __atomic_compare_exchange_n(&_M_i, &__i1, __i2, 0, 900171: int(__m1), int(__m2)); 900171: } 900171: 900171: inline __attribute__((__always_inline__)) bool 900171: compare_exchange_strong(__int_type& __i1, __int_type __i2, 900171: memory_order __m1, 900171: memory_order __m2) volatile noexcept 900171: { 900171: do { if (std::__is_constant_evaluated() && !bool(__is_valid_cmpexch_failure_order(__m2))) __builtin_unreachable(); } while (false); 900171: 900171: return __atomic_compare_exchange_n(&_M_i, &__i1, __i2, 0, 900171: int(__m1), int(__m2)); 900171: } 900171: 900171: inline __attribute__((__always_inline__)) bool 900171: compare_exchange_strong(__int_type& __i1, __int_type __i2, 900171: memory_order __m = memory_order_seq_cst) noexcept 900171: { 900171: return compare_exchange_strong(__i1, __i2, __m, 900171: __cmpexch_failure_order(__m)); 900171: } 900171: 900171: inline __attribute__((__always_inline__)) bool 900171: compare_exchange_strong(__int_type& __i1, __int_type __i2, 900171: memory_order __m = memory_order_seq_cst) volatile noexcept 900171: { 900171: return compare_exchange_strong(__i1, __i2, __m, 900171: __cmpexch_failure_order(__m)); 900171: } 900171: # 615 "/usr/aarch64-linux-gnu/include/c++/12/bits/atomic_base.h" 3 900171: inline __attribute__((__always_inline__)) __int_type 900171: fetch_add(__int_type __i, 900171: memory_order __m = memory_order_seq_cst) noexcept 900171: { return __atomic_fetch_add(&_M_i, __i, int(__m)); } 900171: 900171: inline __attribute__((__always_inline__)) __int_type 900171: fetch_add(__int_type __i, 900171: memory_order __m = memory_order_seq_cst) volatile noexcept 900171: { return __atomic_fetch_add(&_M_i, __i, int(__m)); } 900171: 900171: inline __attribute__((__always_inline__)) __int_type 900171: fetch_sub(__int_type __i, 900171: memory_order __m = memory_order_seq_cst) noexcept 900171: { return __atomic_fetch_sub(&_M_i, __i, int(__m)); } 900171: 900171: inline __attribute__((__always_inline__)) __int_type 900171: fetch_sub(__int_type __i, 900171: memory_order __m = memory_order_seq_cst) volatile noexcept 900171: { return __atomic_fetch_sub(&_M_i, __i, int(__m)); } 900171: 900171: inline __attribute__((__always_inline__)) __int_type 900171: fetch_and(__int_type __i, 900171: memory_order __m = memory_order_seq_cst) noexcept 900171: { return __atomic_fetch_and(&_M_i, __i, int(__m)); } 900171: 900171: inline __attribute__((__always_inline__)) __int_type 900171: fetch_and(__int_type __i, 900171: memory_order __m = memory_order_seq_cst) volatile noexcept 900171: { return __atomic_fetch_and(&_M_i, __i, int(__m)); } 900171: 900171: inline __attribute__((__always_inline__)) __int_type 900171: fetch_or(__int_type __i, 900171: memory_order __m = memory_order_seq_cst) noexcept 900171: { return __atomic_fetch_or(&_M_i, __i, int(__m)); } 900171: 900171: inline __attribute__((__always_inline__)) __int_type 900171: fetch_or(__int_type __i, 900171: memory_order __m = memory_order_seq_cst) volatile noexcept 900171: { return __atomic_fetch_or(&_M_i, __i, int(__m)); } 900171: 900171: inline __attribute__((__always_inline__)) __int_type 900171: fetch_xor(__int_type __i, 900171: memory_order __m = memory_order_seq_cst) noexcept 900171: { return __atomic_fetch_xor(&_M_i, __i, int(__m)); } 900171: 900171: inline __attribute__((__always_inline__)) __int_type 900171: fetch_xor(__int_type __i, 900171: memory_order __m = memory_order_seq_cst) volatile noexcept 900171: { return __atomic_fetch_xor(&_M_i, __i, int(__m)); } 900171: }; 900171: 900171: 900171: 900171: template 900171: struct __atomic_base<_PTp*> 900171: { 900171: private: 900171: typedef _PTp* __pointer_type; 900171: 900171: __pointer_type _M_p ; 900171: 900171: 900171: constexpr ptrdiff_t 900171: _M_type_size(ptrdiff_t __d) const { return __d * sizeof(_PTp); } 900171: 900171: constexpr ptrdiff_t 900171: _M_type_size(ptrdiff_t __d) const volatile { return __d * sizeof(_PTp); } 900171: 900171: public: 900171: __atomic_base() noexcept = default; 900171: ~__atomic_base() noexcept = default; 900171: __atomic_base(const __atomic_base&) = delete; 900171: __atomic_base& operator=(const __atomic_base&) = delete; 900171: __atomic_base& operator=(const __atomic_base&) volatile = delete; 900171: 900171: 900171: constexpr __atomic_base(__pointer_type __p) noexcept : _M_p (__p) { } 900171: 900171: operator __pointer_type() const noexcept 900171: { return load(); } 900171: 900171: operator __pointer_type() const volatile noexcept 900171: { return load(); } 900171: 900171: __pointer_type 900171: operator=(__pointer_type __p) noexcept 900171: { 900171: store(__p); 900171: return __p; 900171: } 900171: 900171: __pointer_type 900171: operator=(__pointer_type __p) volatile noexcept 900171: { 900171: store(__p); 900171: return __p; 900171: } 900171: 900171: __pointer_type 900171: operator++(int) noexcept 900171: { return fetch_add(1); } 900171: 900171: __pointer_type 900171: operator++(int) volatile noexcept 900171: { return fetch_add(1); } 900171: 900171: __pointer_type 900171: operator--(int) noexcept 900171: { return fetch_sub(1); } 900171: 900171: __pointer_type 900171: operator--(int) volatile noexcept 900171: { return fetch_sub(1); } 900171: 900171: __pointer_type 900171: operator++() noexcept 900171: { return __atomic_add_fetch(&_M_p, _M_type_size(1), 900171: int(memory_order_seq_cst)); } 900171: 900171: __pointer_type 900171: operator++() volatile noexcept 900171: { return __atomic_add_fetch(&_M_p, _M_type_size(1), 900171: int(memory_order_seq_cst)); } 900171: 900171: __pointer_type 900171: operator--() noexcept 900171: { return __atomic_sub_fetch(&_M_p, _M_type_size(1), 900171: int(memory_order_seq_cst)); } 900171: 900171: __pointer_type 900171: operator--() volatile noexcept 900171: { return __atomic_sub_fetch(&_M_p, _M_type_size(1), 900171: int(memory_order_seq_cst)); } 900171: 900171: __pointer_type 900171: operator+=(ptrdiff_t __d) noexcept 900171: { return __atomic_add_fetch(&_M_p, _M_type_size(__d), 900171: int(memory_order_seq_cst)); } 900171: 900171: __pointer_type 900171: operator+=(ptrdiff_t __d) volatile noexcept 900171: { return __atomic_add_fetch(&_M_p, _M_type_size(__d), 900171: int(memory_order_seq_cst)); } 900171: 900171: __pointer_type 900171: operator-=(ptrdiff_t __d) noexcept 900171: { return __atomic_sub_fetch(&_M_p, _M_type_size(__d), 900171: int(memory_order_seq_cst)); } 900171: 900171: __pointer_type 900171: operator-=(ptrdiff_t __d) volatile noexcept 900171: { return __atomic_sub_fetch(&_M_p, _M_type_size(__d), 900171: int(memory_order_seq_cst)); } 900171: 900171: bool 900171: is_lock_free() const noexcept 900171: { 900171: 900171: return __atomic_is_lock_free(sizeof(_M_p), 900171: reinterpret_cast(-__alignof(_M_p))); 900171: } 900171: 900171: bool 900171: is_lock_free() const volatile noexcept 900171: { 900171: 900171: return __atomic_is_lock_free(sizeof(_M_p), 900171: reinterpret_cast(-__alignof(_M_p))); 900171: } 900171: 900171: inline __attribute__((__always_inline__)) void 900171: store(__pointer_type __p, 900171: memory_order __m = memory_order_seq_cst) noexcept 900171: { 900171: memory_order __b __attribute__ ((__unused__)) 900171: = __m & __memory_order_mask; 900171: 900171: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_acquire)) __builtin_unreachable(); } while (false); 900171: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_acq_rel)) __builtin_unreachable(); } while (false); 900171: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_consume)) __builtin_unreachable(); } while (false); 900171: 900171: __atomic_store_n(&_M_p, __p, int(__m)); 900171: } 900171: 900171: inline __attribute__((__always_inline__)) void 900171: store(__pointer_type __p, 900171: memory_order __m = memory_order_seq_cst) volatile noexcept 900171: { 900171: memory_order __b __attribute__ ((__unused__)) 900171: = __m & __memory_order_mask; 900171: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_acquire)) __builtin_unreachable(); } while (false); 900171: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_acq_rel)) __builtin_unreachable(); } while (false); 900171: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_consume)) __builtin_unreachable(); } while (false); 900171: 900171: __atomic_store_n(&_M_p, __p, int(__m)); 900171: } 900171: 900171: inline __attribute__((__always_inline__)) __pointer_type 900171: load(memory_order __m = memory_order_seq_cst) const noexcept 900171: { 900171: memory_order __b __attribute__ ((__unused__)) 900171: = __m & __memory_order_mask; 900171: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_release)) __builtin_unreachable(); } while (false); 900171: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_acq_rel)) __builtin_unreachable(); } while (false); 900171: 900171: return __atomic_load_n(&_M_p, int(__m)); 900171: } 900171: 900171: inline __attribute__((__always_inline__)) __pointer_type 900171: load(memory_order __m = memory_order_seq_cst) const volatile noexcept 900171: { 900171: memory_order __b __attribute__ ((__unused__)) 900171: = __m & __memory_order_mask; 900171: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_release)) __builtin_unreachable(); } while (false); 900171: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_acq_rel)) __builtin_unreachable(); } while (false); 900171: 900171: return __atomic_load_n(&_M_p, int(__m)); 900171: } 900171: 900171: inline __attribute__((__always_inline__)) __pointer_type 900171: exchange(__pointer_type __p, 900171: memory_order __m = memory_order_seq_cst) noexcept 900171: { 900171: return __atomic_exchange_n(&_M_p, __p, int(__m)); 900171: } 900171: 900171: 900171: inline __attribute__((__always_inline__)) __pointer_type 900171: exchange(__pointer_type __p, 900171: memory_order __m = memory_order_seq_cst) volatile noexcept 900171: { 900171: return __atomic_exchange_n(&_M_p, __p, int(__m)); 900171: } 900171: 900171: inline __attribute__((__always_inline__)) bool 900171: compare_exchange_weak(__pointer_type& __p1, __pointer_type __p2, 900171: memory_order __m1, 900171: memory_order __m2) noexcept 900171: { 900171: do { if (std::__is_constant_evaluated() && !bool(__is_valid_cmpexch_failure_order(__m2))) __builtin_unreachable(); } while (false); 900171: 900171: return __atomic_compare_exchange_n(&_M_p, &__p1, __p2, 1, 900171: int(__m1), int(__m2)); 900171: } 900171: 900171: inline __attribute__((__always_inline__)) bool 900171: compare_exchange_weak(__pointer_type& __p1, __pointer_type __p2, 900171: memory_order __m1, 900171: memory_order __m2) volatile noexcept 900171: { 900171: do { if (std::__is_constant_evaluated() && !bool(__is_valid_cmpexch_failure_order(__m2))) __builtin_unreachable(); } while (false); 900171: 900171: return __atomic_compare_exchange_n(&_M_p, &__p1, __p2, 1, 900171: int(__m1), int(__m2)); 900171: } 900171: 900171: inline __attribute__((__always_inline__)) bool 900171: compare_exchange_strong(__pointer_type& __p1, __pointer_type __p2, 900171: memory_order __m1, 900171: memory_order __m2) noexcept 900171: { 900171: do { if (std::__is_constant_evaluated() && !bool(__is_valid_cmpexch_failure_order(__m2))) __builtin_unreachable(); } while (false); 900171: 900171: return __atomic_compare_exchange_n(&_M_p, &__p1, __p2, 0, 900171: int(__m1), int(__m2)); 900171: } 900171: 900171: inline __attribute__((__always_inline__)) bool 900171: compare_exchange_strong(__pointer_type& __p1, __pointer_type __p2, 900171: memory_order __m1, 900171: memory_order __m2) volatile noexcept 900171: { 900171: do { if (std::__is_constant_evaluated() && !bool(__is_valid_cmpexch_failure_order(__m2))) __builtin_unreachable(); } while (false); 900171: 900171: return __atomic_compare_exchange_n(&_M_p, &__p1, __p2, 0, 900171: int(__m1), int(__m2)); 900171: } 900171: # 918 "/usr/aarch64-linux-gnu/include/c++/12/bits/atomic_base.h" 3 900171: inline __attribute__((__always_inline__)) __pointer_type 900171: fetch_add(ptrdiff_t __d, 900171: memory_order __m = memory_order_seq_cst) noexcept 900171: { return __atomic_fetch_add(&_M_p, _M_type_size(__d), int(__m)); } 900171: 900171: inline __attribute__((__always_inline__)) __pointer_type 900171: fetch_add(ptrdiff_t __d, 900171: memory_order __m = memory_order_seq_cst) volatile noexcept 900171: { return __atomic_fetch_add(&_M_p, _M_type_size(__d), int(__m)); } 900171: 900171: inline __attribute__((__always_inline__)) __pointer_type 900171: fetch_sub(ptrdiff_t __d, 900171: memory_order __m = memory_order_seq_cst) noexcept 900171: { return __atomic_fetch_sub(&_M_p, _M_type_size(__d), int(__m)); } 900171: 900171: inline __attribute__((__always_inline__)) __pointer_type 900171: fetch_sub(ptrdiff_t __d, 900171: memory_order __m = memory_order_seq_cst) volatile noexcept 900171: { return __atomic_fetch_sub(&_M_p, _M_type_size(__d), int(__m)); } 900171: }; 900171: # 1943 "/usr/aarch64-linux-gnu/include/c++/12/bits/atomic_base.h" 3 900171: 900171: } 900171: # 34 "/usr/aarch64-linux-gnu/include/c++/12/bits/shared_ptr_atomic.h" 2 3 900171: 900171: namespace std __attribute__ ((__visibility__ ("default"))) 900171: { 900171: 900171: # 47 "/usr/aarch64-linux-gnu/include/c++/12/bits/shared_ptr_atomic.h" 3 900171: struct _Sp_locker 900171: { 900171: _Sp_locker(const _Sp_locker&) = delete; 900171: _Sp_locker& operator=(const _Sp_locker&) = delete; 900171: 900171: 900171: explicit 900171: _Sp_locker(const void*) noexcept; 900171: _Sp_locker(const void*, const void*) noexcept; 900171: ~_Sp_locker(); 900171: 900171: private: 900171: unsigned char _M_key1; 900171: unsigned char _M_key2; 900171: 900171: 900171: 900171: }; 900171: # 74 "/usr/aarch64-linux-gnu/include/c++/12/bits/shared_ptr_atomic.h" 3 900171: template 900171: inline bool 900171: atomic_is_lock_free(const __shared_ptr<_Tp, _Lp>* __p) 900171: { 900171: 900171: return __gthread_active_p() == 0; 900171: 900171: 900171: 900171: } 900171: 900171: template 900171: inline bool 900171: atomic_is_lock_free(const shared_ptr<_Tp>* __p) 900171: { return std::atomic_is_lock_free<_Tp, __default_lock_policy>(__p); } 900171: # 101 "/usr/aarch64-linux-gnu/include/c++/12/bits/shared_ptr_atomic.h" 3 900171: template 900171: inline shared_ptr<_Tp> 900171: atomic_load_explicit(const shared_ptr<_Tp>* __p, memory_order) 900171: { 900171: _Sp_locker __lock{__p}; 900171: return *__p; 900171: } 900171: 900171: template 900171: inline shared_ptr<_Tp> 900171: atomic_load(const shared_ptr<_Tp>* __p) 900171: { return std::atomic_load_explicit(__p, memory_order_seq_cst); } 900171: 900171: template 900171: inline __shared_ptr<_Tp, _Lp> 900171: atomic_load_explicit(const __shared_ptr<_Tp, _Lp>* __p, memory_order) 900171: { 900171: _Sp_locker __lock{__p}; 900171: return *__p; 900171: } 900171: 900171: template 900171: inline __shared_ptr<_Tp, _Lp> 900171: atomic_load(const __shared_ptr<_Tp, _Lp>* __p) 900171: { return std::atomic_load_explicit(__p, memory_order_seq_cst); } 900171: # 137 "/usr/aarch64-linux-gnu/include/c++/12/bits/shared_ptr_atomic.h" 3 900171: template 900171: inline void 900171: atomic_store_explicit(shared_ptr<_Tp>* __p, shared_ptr<_Tp> __r, 900171: memory_order) 900171: { 900171: _Sp_locker __lock{__p}; 900171: __p->swap(__r); 900171: } 900171: 900171: template 900171: inline void 900171: atomic_store(shared_ptr<_Tp>* __p, shared_ptr<_Tp> __r) 900171: { std::atomic_store_explicit(__p, std::move(__r), memory_order_seq_cst); } 900171: 900171: template 900171: inline void 900171: atomic_store_explicit(__shared_ptr<_Tp, _Lp>* __p, 900171: __shared_ptr<_Tp, _Lp> __r, 900171: memory_order) 900171: { 900171: _Sp_locker __lock{__p}; 900171: __p->swap(__r); 900171: } 900171: 900171: template 900171: inline void 900171: atomic_store(__shared_ptr<_Tp, _Lp>* __p, __shared_ptr<_Tp, _Lp> __r) 900171: { std::atomic_store_explicit(__p, std::move(__r), memory_order_seq_cst); } 900171: # 174 "/usr/aarch64-linux-gnu/include/c++/12/bits/shared_ptr_atomic.h" 3 900171: template 900171: inline shared_ptr<_Tp> 900171: atomic_exchange_explicit(shared_ptr<_Tp>* __p, shared_ptr<_Tp> __r, 900171: memory_order) 900171: { 900171: _Sp_locker __lock{__p}; 900171: __p->swap(__r); 900171: return __r; 900171: } 900171: 900171: template 900171: inline shared_ptr<_Tp> 900171: atomic_exchange(shared_ptr<_Tp>* __p, shared_ptr<_Tp> __r) 900171: { 900171: return std::atomic_exchange_explicit(__p, std::move(__r), 900171: memory_order_seq_cst); 900171: } 900171: 900171: template 900171: inline __shared_ptr<_Tp, _Lp> 900171: atomic_exchange_explicit(__shared_ptr<_Tp, _Lp>* __p, 900171: __shared_ptr<_Tp, _Lp> __r, 900171: memory_order) 900171: { 900171: _Sp_locker __lock{__p}; 900171: __p->swap(__r); 900171: return __r; 900171: } 900171: 900171: template 900171: inline __shared_ptr<_Tp, _Lp> 900171: atomic_exchange(__shared_ptr<_Tp, _Lp>* __p, __shared_ptr<_Tp, _Lp> __r) 900171: { 900171: return std::atomic_exchange_explicit(__p, std::move(__r), 900171: memory_order_seq_cst); 900171: } 900171: # 223 "/usr/aarch64-linux-gnu/include/c++/12/bits/shared_ptr_atomic.h" 3 900171: template 900171: bool 900171: atomic_compare_exchange_strong_explicit(shared_ptr<_Tp>* __p, 900171: shared_ptr<_Tp>* __v, 900171: shared_ptr<_Tp> __w, 900171: memory_order, 900171: memory_order) 900171: { 900171: shared_ptr<_Tp> __x; 900171: _Sp_locker __lock{__p, __v}; 900171: owner_less> __less; 900171: if (*__p == *__v && !__less(*__p, *__v) && !__less(*__v, *__p)) 900171: { 900171: __x = std::move(*__p); 900171: *__p = std::move(__w); 900171: return true; 900171: } 900171: __x = std::move(*__v); 900171: *__v = *__p; 900171: return false; 900171: } 900171: 900171: template 900171: inline bool 900171: atomic_compare_exchange_strong(shared_ptr<_Tp>* __p, shared_ptr<_Tp>* __v, 900171: shared_ptr<_Tp> __w) 900171: { 900171: return std::atomic_compare_exchange_strong_explicit(__p, __v, 900171: std::move(__w), memory_order_seq_cst, memory_order_seq_cst); 900171: } 900171: 900171: template 900171: inline bool 900171: atomic_compare_exchange_weak_explicit(shared_ptr<_Tp>* __p, 900171: shared_ptr<_Tp>* __v, 900171: shared_ptr<_Tp> __w, 900171: memory_order __success, 900171: memory_order __failure) 900171: { 900171: return std::atomic_compare_exchange_strong_explicit(__p, __v, 900171: std::move(__w), __success, __failure); 900171: } 900171: 900171: template 900171: inline bool 900171: atomic_compare_exchange_weak(shared_ptr<_Tp>* __p, shared_ptr<_Tp>* __v, 900171: shared_ptr<_Tp> __w) 900171: { 900171: return std::atomic_compare_exchange_weak_explicit(__p, __v, 900171: std::move(__w), memory_order_seq_cst, memory_order_seq_cst); 900171: } 900171: 900171: template 900171: bool 900171: atomic_compare_exchange_strong_explicit(__shared_ptr<_Tp, _Lp>* __p, 900171: __shared_ptr<_Tp, _Lp>* __v, 900171: __shared_ptr<_Tp, _Lp> __w, 900171: memory_order, 900171: memory_order) 900171: { 900171: __shared_ptr<_Tp, _Lp> __x; 900171: _Sp_locker __lock{__p, __v}; 900171: owner_less<__shared_ptr<_Tp, _Lp>> __less; 900171: if (*__p == *__v && !__less(*__p, *__v) && !__less(*__v, *__p)) 900171: { 900171: __x = std::move(*__p); 900171: *__p = std::move(__w); 900171: return true; 900171: } 900171: __x = std::move(*__v); 900171: *__v = *__p; 900171: return false; 900171: } 900171: 900171: template 900171: inline bool 900171: atomic_compare_exchange_strong(__shared_ptr<_Tp, _Lp>* __p, 900171: __shared_ptr<_Tp, _Lp>* __v, 900171: __shared_ptr<_Tp, _Lp> __w) 900171: { 900171: return std::atomic_compare_exchange_strong_explicit(__p, __v, 900171: std::move(__w), memory_order_seq_cst, memory_order_seq_cst); 900171: } 900171: 900171: template 900171: inline bool 900171: atomic_compare_exchange_weak_explicit(__shared_ptr<_Tp, _Lp>* __p, 900171: __shared_ptr<_Tp, _Lp>* __v, 900171: __shared_ptr<_Tp, _Lp> __w, 900171: memory_order __success, 900171: memory_order __failure) 900171: { 900171: return std::atomic_compare_exchange_strong_explicit(__p, __v, 900171: std::move(__w), __success, __failure); 900171: } 900171: 900171: template 900171: inline bool 900171: atomic_compare_exchange_weak(__shared_ptr<_Tp, _Lp>* __p, 900171: __shared_ptr<_Tp, _Lp>* __v, 900171: __shared_ptr<_Tp, _Lp> __w) 900171: { 900171: return std::atomic_compare_exchange_weak_explicit(__p, __v, 900171: std::move(__w), memory_order_seq_cst, memory_order_seq_cst); 900171: } 900171: # 796 "/usr/aarch64-linux-gnu/include/c++/12/bits/shared_ptr_atomic.h" 3 900171: 900171: } 900171: # 79 "/usr/aarch64-linux-gnu/include/c++/12/memory" 2 3 900171: 900171: 900171: 900171: # 1 "/usr/aarch64-linux-gnu/include/c++/12/backward/auto_ptr.h" 1 3 900171: # 36 "/usr/aarch64-linux-gnu/include/c++/12/backward/auto_ptr.h" 3 900171: namespace std __attribute__ ((__visibility__ ("default"))) 900171: { 900171: 900171: # 47 "/usr/aarch64-linux-gnu/include/c++/12/backward/auto_ptr.h" 3 900171: template 900171: struct auto_ptr_ref 900171: { 900171: _Tp1* _M_ptr; 900171: 900171: explicit 900171: auto_ptr_ref(_Tp1* __p): _M_ptr(__p) { } 900171: } __attribute__ ((__deprecated__)); 900171: 900171: #pragma GCC diagnostic push 900171: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 900171: # 88 "/usr/aarch64-linux-gnu/include/c++/12/backward/auto_ptr.h" 3 900171: template 900171: class auto_ptr 900171: { 900171: private: 900171: _Tp* _M_ptr; 900171: 900171: public: 900171: 900171: typedef _Tp element_type; 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: explicit 900171: auto_ptr(element_type* __p = 0) throw() : _M_ptr(__p) { } 900171: # 114 "/usr/aarch64-linux-gnu/include/c++/12/backward/auto_ptr.h" 3 900171: auto_ptr(auto_ptr& __a) throw() : _M_ptr(__a.release()) { } 900171: # 126 "/usr/aarch64-linux-gnu/include/c++/12/backward/auto_ptr.h" 3 900171: template 900171: auto_ptr(auto_ptr<_Tp1>& __a) throw() : _M_ptr(__a.release()) { } 900171: # 137 "/usr/aarch64-linux-gnu/include/c++/12/backward/auto_ptr.h" 3 900171: auto_ptr& 900171: operator=(auto_ptr& __a) throw() 900171: { 900171: reset(__a.release()); 900171: return *this; 900171: } 900171: # 154 "/usr/aarch64-linux-gnu/include/c++/12/backward/auto_ptr.h" 3 900171: template 900171: auto_ptr& 900171: operator=(auto_ptr<_Tp1>& __a) throw() 900171: { 900171: reset(__a.release()); 900171: return *this; 900171: } 900171: # 172 "/usr/aarch64-linux-gnu/include/c++/12/backward/auto_ptr.h" 3 900171: ~auto_ptr() { delete _M_ptr; } 900171: # 182 "/usr/aarch64-linux-gnu/include/c++/12/backward/auto_ptr.h" 3 900171: element_type& 900171: operator*() const throw() 900171: { 900171: do { if (std::__is_constant_evaluated() && !bool(_M_ptr != 0)) __builtin_unreachable(); } while (false); 900171: return *_M_ptr; 900171: } 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: element_type* 900171: operator->() const throw() 900171: { 900171: do { if (std::__is_constant_evaluated() && !bool(_M_ptr != 0)) __builtin_unreachable(); } while (false); 900171: return _M_ptr; 900171: } 900171: # 212 "/usr/aarch64-linux-gnu/include/c++/12/backward/auto_ptr.h" 3 900171: element_type* 900171: get() const throw() { return _M_ptr; } 900171: # 226 "/usr/aarch64-linux-gnu/include/c++/12/backward/auto_ptr.h" 3 900171: element_type* 900171: release() throw() 900171: { 900171: element_type* __tmp = _M_ptr; 900171: _M_ptr = 0; 900171: return __tmp; 900171: } 900171: # 241 "/usr/aarch64-linux-gnu/include/c++/12/backward/auto_ptr.h" 3 900171: void 900171: reset(element_type* __p = 0) throw() 900171: { 900171: if (__p != _M_ptr) 900171: { 900171: delete _M_ptr; 900171: _M_ptr = __p; 900171: } 900171: } 900171: # 266 "/usr/aarch64-linux-gnu/include/c++/12/backward/auto_ptr.h" 3 900171: auto_ptr(auto_ptr_ref __ref) throw() 900171: : _M_ptr(__ref._M_ptr) { } 900171: 900171: auto_ptr& 900171: operator=(auto_ptr_ref __ref) throw() 900171: { 900171: if (__ref._M_ptr != this->get()) 900171: { 900171: delete _M_ptr; 900171: _M_ptr = __ref._M_ptr; 900171: } 900171: return *this; 900171: } 900171: 900171: template 900171: operator auto_ptr_ref<_Tp1>() throw() 900171: { return auto_ptr_ref<_Tp1>(this->release()); } 900171: 900171: template 900171: operator auto_ptr<_Tp1>() throw() 900171: { return auto_ptr<_Tp1>(this->release()); } 900171: } __attribute__ ((__deprecated__ ("use '" "std::unique_ptr" "' instead"))); 900171: 900171: 900171: 900171: template<> 900171: class auto_ptr 900171: { 900171: public: 900171: typedef void element_type; 900171: } __attribute__ ((__deprecated__)); 900171: 900171: 900171: template<_Lock_policy _Lp> 900171: template 900171: inline 900171: __shared_count<_Lp>::__shared_count(std::auto_ptr<_Tp>&& __r) 900171: : _M_pi(new _Sp_counted_ptr<_Tp*, _Lp>(__r.get())) 900171: { __r.release(); } 900171: 900171: template 900171: template 900171: inline 900171: __shared_ptr<_Tp, _Lp>::__shared_ptr(std::auto_ptr<_Tp1>&& __r) 900171: : _M_ptr(__r.get()), _M_refcount() 900171: { 900171: 900171: static_assert( sizeof(_Tp1) > 0, "incomplete type" ); 900171: _Tp1* __tmp = __r.get(); 900171: _M_refcount = __shared_count<_Lp>(std::move(__r)); 900171: _M_enable_shared_from_this_with(__tmp); 900171: } 900171: 900171: template 900171: template 900171: inline 900171: shared_ptr<_Tp>::shared_ptr(std::auto_ptr<_Tp1>&& __r) 900171: : __shared_ptr<_Tp>(std::move(__r)) { } 900171: 900171: template 900171: template 900171: inline 900171: unique_ptr<_Tp, _Dp>::unique_ptr(auto_ptr<_Up>&& __u) noexcept 900171: : _M_t(__u.release(), deleter_type()) { } 900171: 900171: 900171: #pragma GCC diagnostic pop 900171: 900171: 900171: } 900171: # 83 "/usr/aarch64-linux-gnu/include/c++/12/memory" 2 3 900171: # 91 "/usr/aarch64-linux-gnu/include/c++/12/memory" 3 900171: namespace std __attribute__ ((__visibility__ ("default"))) 900171: { 900171: 900171: # 109 "/usr/aarch64-linux-gnu/include/c++/12/memory" 3 900171: enum class pointer_safety { relaxed, preferred, strict }; 900171: 900171: 900171: inline void 900171: declare_reachable(void*) { } 900171: 900171: 900171: template 900171: inline _Tp* 900171: undeclare_reachable(_Tp* __p) { return __p; } 900171: 900171: 900171: inline void 900171: declare_no_pointers(char*, size_t) { } 900171: 900171: 900171: inline void 900171: undeclare_no_pointers(char*, size_t) { } 900171: 900171: 900171: inline pointer_safety 900171: get_pointer_safety() noexcept { return pointer_safety::relaxed; } 900171: 900171: 900171: 900171: } 900171: # 29 "third_party/butteraugli/butteraugli/butteraugli.h" 2 900171: # 1 "/usr/aarch64-linux-gnu/include/c++/12/vector" 1 3 900171: # 58 "/usr/aarch64-linux-gnu/include/c++/12/vector" 3 900171: 900171: # 59 "/usr/aarch64-linux-gnu/include/c++/12/vector" 3 900171: 900171: 900171: 900171: 900171: 900171: # 1 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_vector.h" 1 3 900171: # 63 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_vector.h" 3 900171: # 1 "/usr/aarch64-linux-gnu/include/c++/12/initializer_list" 1 3 900171: # 33 "/usr/aarch64-linux-gnu/include/c++/12/initializer_list" 3 900171: 900171: # 34 "/usr/aarch64-linux-gnu/include/c++/12/initializer_list" 3 900171: 900171: 900171: 900171: 900171: 900171: #pragma GCC visibility push(default) 900171: 900171: 900171: 900171: namespace std 900171: { 900171: 900171: template 900171: class initializer_list 900171: { 900171: public: 900171: typedef _E value_type; 900171: typedef const _E& reference; 900171: typedef const _E& const_reference; 900171: typedef size_t size_type; 900171: typedef const _E* iterator; 900171: typedef const _E* const_iterator; 900171: 900171: private: 900171: iterator _M_array; 900171: size_type _M_len; 900171: 900171: 900171: constexpr initializer_list(const_iterator __a, size_type __l) 900171: : _M_array(__a), _M_len(__l) { } 900171: 900171: public: 900171: constexpr initializer_list() noexcept 900171: : _M_array(0), _M_len(0) { } 900171: 900171: 900171: constexpr size_type 900171: size() const noexcept { return _M_len; } 900171: 900171: 900171: constexpr const_iterator 900171: begin() const noexcept { return _M_array; } 900171: 900171: 900171: constexpr const_iterator 900171: end() const noexcept { return begin() + size(); } 900171: }; 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: template 900171: constexpr const _Tp* 900171: begin(initializer_list<_Tp> __ils) noexcept 900171: { return __ils.begin(); } 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: template 900171: constexpr const _Tp* 900171: end(initializer_list<_Tp> __ils) noexcept 900171: { return __ils.end(); } 900171: } 900171: 900171: #pragma GCC visibility pop 900171: # 64 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_vector.h" 2 3 900171: # 78 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_vector.h" 3 900171: namespace std __attribute__ ((__visibility__ ("default"))) 900171: { 900171: 900171: 900171: 900171: 900171: template 900171: struct _Vector_base 900171: { 900171: typedef typename __gnu_cxx::__alloc_traits<_Alloc>::template 900171: rebind<_Tp>::other _Tp_alloc_type; 900171: typedef typename __gnu_cxx::__alloc_traits<_Tp_alloc_type>::pointer 900171: pointer; 900171: 900171: struct _Vector_impl_data 900171: { 900171: pointer _M_start; 900171: pointer _M_finish; 900171: pointer _M_end_of_storage; 900171: 900171: 900171: _Vector_impl_data() noexcept 900171: : _M_start(), _M_finish(), _M_end_of_storage() 900171: { } 900171: 900171: 900171: 900171: _Vector_impl_data(_Vector_impl_data&& __x) noexcept 900171: : _M_start(__x._M_start), _M_finish(__x._M_finish), 900171: _M_end_of_storage(__x._M_end_of_storage) 900171: { __x._M_start = __x._M_finish = __x._M_end_of_storage = pointer(); } 900171: 900171: 900171: 900171: void 900171: _M_copy_data(_Vector_impl_data const& __x) noexcept 900171: { 900171: _M_start = __x._M_start; 900171: _M_finish = __x._M_finish; 900171: _M_end_of_storage = __x._M_end_of_storage; 900171: } 900171: 900171: 900171: void 900171: _M_swap_data(_Vector_impl_data& __x) noexcept 900171: { 900171: 900171: 900171: _Vector_impl_data __tmp; 900171: __tmp._M_copy_data(*this); 900171: _M_copy_data(__x); 900171: __x._M_copy_data(__tmp); 900171: } 900171: }; 900171: 900171: struct _Vector_impl 900171: : public _Tp_alloc_type, public _Vector_impl_data 900171: { 900171: 900171: _Vector_impl() noexcept(is_nothrow_default_constructible<_Tp_alloc_type>::value) 900171: 900171: : _Tp_alloc_type() 900171: { } 900171: 900171: 900171: _Vector_impl(_Tp_alloc_type const& __a) noexcept 900171: : _Tp_alloc_type(__a) 900171: { } 900171: 900171: 900171: 900171: 900171: 900171: _Vector_impl(_Vector_impl&& __x) noexcept 900171: : _Tp_alloc_type(std::move(__x)), _Vector_impl_data(std::move(__x)) 900171: { } 900171: 900171: 900171: _Vector_impl(_Tp_alloc_type&& __a) noexcept 900171: : _Tp_alloc_type(std::move(__a)) 900171: { } 900171: 900171: 900171: _Vector_impl(_Tp_alloc_type&& __a, _Vector_impl&& __rv) noexcept 900171: : _Tp_alloc_type(std::move(__a)), _Vector_impl_data(std::move(__rv)) 900171: { } 900171: # 291 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_vector.h" 3 900171: }; 900171: 900171: public: 900171: typedef _Alloc allocator_type; 900171: 900171: 900171: _Tp_alloc_type& 900171: _M_get_Tp_allocator() noexcept 900171: { return this->_M_impl; } 900171: 900171: 900171: const _Tp_alloc_type& 900171: _M_get_Tp_allocator() const noexcept 900171: { return this->_M_impl; } 900171: 900171: 900171: allocator_type 900171: get_allocator() const noexcept 900171: { return allocator_type(_M_get_Tp_allocator()); } 900171: 900171: 900171: _Vector_base() = default; 900171: 900171: 900171: 900171: 900171: 900171: _Vector_base(const allocator_type& __a) noexcept 900171: : _M_impl(__a) { } 900171: 900171: 900171: 900171: 900171: _Vector_base(size_t __n) 900171: : _M_impl() 900171: { _M_create_storage(__n); } 900171: 900171: 900171: 900171: _Vector_base(size_t __n, const allocator_type& __a) 900171: : _M_impl(__a) 900171: { _M_create_storage(__n); } 900171: 900171: 900171: _Vector_base(_Vector_base&&) = default; 900171: 900171: 900171: 900171: 900171: _Vector_base(_Tp_alloc_type&& __a) noexcept 900171: : _M_impl(std::move(__a)) { } 900171: 900171: 900171: _Vector_base(_Vector_base&& __x, const allocator_type& __a) 900171: : _M_impl(__a) 900171: { 900171: if (__x.get_allocator() == __a) 900171: this->_M_impl._M_swap_data(__x._M_impl); 900171: else 900171: { 900171: size_t __n = __x._M_impl._M_finish - __x._M_impl._M_start; 900171: _M_create_storage(__n); 900171: } 900171: } 900171: 900171: 900171: 900171: _Vector_base(const allocator_type& __a, _Vector_base&& __x) 900171: : _M_impl(_Tp_alloc_type(__a), std::move(__x._M_impl)) 900171: { } 900171: 900171: 900171: 900171: ~_Vector_base() noexcept 900171: { 900171: _M_deallocate(_M_impl._M_start, 900171: _M_impl._M_end_of_storage - _M_impl._M_start); 900171: } 900171: 900171: public: 900171: _Vector_impl _M_impl; 900171: 900171: 900171: pointer 900171: _M_allocate(size_t __n) 900171: { 900171: typedef __gnu_cxx::__alloc_traits<_Tp_alloc_type> _Tr; 900171: return __n != 0 ? _Tr::allocate(_M_impl, __n) : pointer(); 900171: } 900171: 900171: 900171: void 900171: _M_deallocate(pointer __p, size_t __n) 900171: { 900171: typedef __gnu_cxx::__alloc_traits<_Tp_alloc_type> _Tr; 900171: if (__p) 900171: _Tr::deallocate(_M_impl, __p, __n); 900171: } 900171: 900171: protected: 900171: 900171: void 900171: _M_create_storage(size_t __n) 900171: { 900171: this->_M_impl._M_start = this->_M_allocate(__n); 900171: this->_M_impl._M_finish = this->_M_impl._M_start; 900171: this->_M_impl._M_end_of_storage = this->_M_impl._M_start + __n; 900171: } 900171: }; 900171: # 422 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_vector.h" 3 900171: template > 900171: class vector : protected _Vector_base<_Tp, _Alloc> 900171: { 900171: # 435 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_vector.h" 3 900171: static_assert(is_same::type, _Tp>::value, 900171: "std::vector must have a non-const, non-volatile value_type"); 900171: 900171: static_assert(is_same::value, 900171: "std::vector must have the same value_type as its allocator"); 900171: 900171: 900171: 900171: typedef _Vector_base<_Tp, _Alloc> _Base; 900171: typedef typename _Base::_Tp_alloc_type _Tp_alloc_type; 900171: typedef __gnu_cxx::__alloc_traits<_Tp_alloc_type> _Alloc_traits; 900171: 900171: public: 900171: typedef _Tp value_type; 900171: typedef typename _Base::pointer pointer; 900171: typedef typename _Alloc_traits::const_pointer const_pointer; 900171: typedef typename _Alloc_traits::reference reference; 900171: typedef typename _Alloc_traits::const_reference const_reference; 900171: typedef __gnu_cxx::__normal_iterator iterator; 900171: typedef __gnu_cxx::__normal_iterator 900171: const_iterator; 900171: typedef std::reverse_iterator const_reverse_iterator; 900171: typedef std::reverse_iterator reverse_iterator; 900171: typedef size_t size_type; 900171: typedef ptrdiff_t difference_type; 900171: typedef _Alloc allocator_type; 900171: 900171: private: 900171: 900171: static constexpr bool 900171: _S_nothrow_relocate(true_type) 900171: { 900171: return noexcept(std::__relocate_a(std::declval(), 900171: std::declval(), 900171: std::declval(), 900171: std::declval<_Tp_alloc_type&>())); 900171: } 900171: 900171: static constexpr bool 900171: _S_nothrow_relocate(false_type) 900171: { return false; } 900171: 900171: static constexpr bool 900171: _S_use_relocate() 900171: { 900171: 900171: 900171: 900171: return _S_nothrow_relocate(__is_move_insertable<_Tp_alloc_type>{}); 900171: } 900171: 900171: static pointer 900171: _S_do_relocate(pointer __first, pointer __last, pointer __result, 900171: _Tp_alloc_type& __alloc, true_type) noexcept 900171: { 900171: return std::__relocate_a(__first, __last, __result, __alloc); 900171: } 900171: 900171: static pointer 900171: _S_do_relocate(pointer, pointer, pointer __result, 900171: _Tp_alloc_type&, false_type) noexcept 900171: { return __result; } 900171: 900171: static pointer 900171: _S_relocate(pointer __first, pointer __last, pointer __result, 900171: _Tp_alloc_type& __alloc) noexcept 900171: { 900171: 900171: 900171: 900171: 900171: using __do_it = __bool_constant<_S_use_relocate()>; 900171: return _S_do_relocate(__first, __last, __result, __alloc, __do_it{}); 900171: 900171: } 900171: 900171: 900171: protected: 900171: using _Base::_M_allocate; 900171: using _Base::_M_deallocate; 900171: using _Base::_M_impl; 900171: using _Base::_M_get_Tp_allocator; 900171: 900171: public: 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: vector() = default; 900171: # 535 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_vector.h" 3 900171: explicit 900171: 900171: vector(const allocator_type& __a) noexcept 900171: : _Base(__a) { } 900171: # 549 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_vector.h" 3 900171: explicit 900171: 900171: vector(size_type __n, const allocator_type& __a = allocator_type()) 900171: : _Base(_S_check_init_len(__n, __a), __a) 900171: { _M_default_initialize(__n); } 900171: # 563 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_vector.h" 3 900171: 900171: vector(size_type __n, const value_type& __value, 900171: const allocator_type& __a = allocator_type()) 900171: : _Base(_S_check_init_len(__n, __a), __a) 900171: { _M_fill_initialize(__n, __value); } 900171: # 595 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_vector.h" 3 900171: 900171: vector(const vector& __x) 900171: : _Base(__x.size(), 900171: _Alloc_traits::_S_select_on_copy(__x._M_get_Tp_allocator())) 900171: { 900171: this->_M_impl._M_finish = 900171: std::__uninitialized_copy_a(__x.begin(), __x.end(), 900171: this->_M_impl._M_start, 900171: _M_get_Tp_allocator()); 900171: } 900171: # 615 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_vector.h" 3 900171: vector(vector&&) noexcept = default; 900171: 900171: 900171: 900171: vector(const vector& __x, const __type_identity_t& __a) 900171: : _Base(__x.size(), __a) 900171: { 900171: this->_M_impl._M_finish = 900171: std::__uninitialized_copy_a(__x.begin(), __x.end(), 900171: this->_M_impl._M_start, 900171: _M_get_Tp_allocator()); 900171: } 900171: 900171: private: 900171: 900171: vector(vector&& __rv, const allocator_type& __m, true_type) noexcept 900171: : _Base(__m, std::move(__rv)) 900171: { } 900171: 900171: 900171: vector(vector&& __rv, const allocator_type& __m, false_type) 900171: : _Base(__m) 900171: { 900171: if (__rv.get_allocator() == __m) 900171: this->_M_impl._M_swap_data(__rv._M_impl); 900171: else if (!__rv.empty()) 900171: { 900171: this->_M_create_storage(__rv.size()); 900171: this->_M_impl._M_finish = 900171: std::__uninitialized_move_a(__rv.begin(), __rv.end(), 900171: this->_M_impl._M_start, 900171: _M_get_Tp_allocator()); 900171: __rv.clear(); 900171: } 900171: } 900171: 900171: public: 900171: 900171: 900171: vector(vector&& __rv, const __type_identity_t& __m) 900171: noexcept( noexcept( 900171: vector(std::declval(), std::declval(), 900171: std::declval())) ) 900171: : vector(std::move(__rv), __m, typename _Alloc_traits::is_always_equal{}) 900171: { } 900171: # 672 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_vector.h" 3 900171: 900171: vector(initializer_list __l, 900171: const allocator_type& __a = allocator_type()) 900171: : _Base(__a) 900171: { 900171: _M_range_initialize(__l.begin(), __l.end(), 900171: random_access_iterator_tag()); 900171: } 900171: # 699 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_vector.h" 3 900171: template> 900171: 900171: vector(_InputIterator __first, _InputIterator __last, 900171: const allocator_type& __a = allocator_type()) 900171: : _Base(__a) 900171: { 900171: _M_range_initialize(__first, __last, 900171: std::__iterator_category(__first)); 900171: } 900171: # 727 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_vector.h" 3 900171: 900171: ~vector() noexcept 900171: { 900171: std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish, 900171: _M_get_Tp_allocator()); 900171: ; 900171: } 900171: # 744 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_vector.h" 3 900171: 900171: vector& 900171: operator=(const vector& __x); 900171: # 759 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_vector.h" 3 900171: 900171: vector& 900171: operator=(vector&& __x) noexcept(_Alloc_traits::_S_nothrow_move()) 900171: { 900171: constexpr bool __move_storage = 900171: _Alloc_traits::_S_propagate_on_move_assign() 900171: || _Alloc_traits::_S_always_equal(); 900171: _M_move_assign(std::move(__x), __bool_constant<__move_storage>()); 900171: return *this; 900171: } 900171: # 781 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_vector.h" 3 900171: 900171: vector& 900171: operator=(initializer_list __l) 900171: { 900171: this->_M_assign_aux(__l.begin(), __l.end(), 900171: random_access_iterator_tag()); 900171: return *this; 900171: } 900171: # 801 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_vector.h" 3 900171: 900171: void 900171: assign(size_type __n, const value_type& __val) 900171: { _M_fill_assign(__n, __val); } 900171: # 819 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_vector.h" 3 900171: template> 900171: 900171: void 900171: assign(_InputIterator __first, _InputIterator __last) 900171: { _M_assign_dispatch(__first, __last, __false_type()); } 900171: # 848 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_vector.h" 3 900171: 900171: void 900171: assign(initializer_list __l) 900171: { 900171: this->_M_assign_aux(__l.begin(), __l.end(), 900171: random_access_iterator_tag()); 900171: } 900171: 900171: 900171: 900171: using _Base::get_allocator; 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: iterator 900171: begin() noexcept 900171: { return iterator(this->_M_impl._M_start); } 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: const_iterator 900171: begin() const noexcept 900171: { return const_iterator(this->_M_impl._M_start); } 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: iterator 900171: end() noexcept 900171: { return iterator(this->_M_impl._M_finish); } 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: const_iterator 900171: end() const noexcept 900171: { return const_iterator(this->_M_impl._M_finish); } 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: reverse_iterator 900171: rbegin() noexcept 900171: { return reverse_iterator(end()); } 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: const_reverse_iterator 900171: rbegin() const noexcept 900171: { return const_reverse_iterator(end()); } 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: reverse_iterator 900171: rend() noexcept 900171: { return reverse_iterator(begin()); } 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: const_reverse_iterator 900171: rend() const noexcept 900171: { return const_reverse_iterator(begin()); } 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: [[__nodiscard__]] 900171: const_iterator 900171: cbegin() const noexcept 900171: { return const_iterator(this->_M_impl._M_start); } 900171: 900171: 900171: 900171: 900171: 900171: 900171: [[__nodiscard__]] 900171: const_iterator 900171: cend() const noexcept 900171: { return const_iterator(this->_M_impl._M_finish); } 900171: 900171: 900171: 900171: 900171: 900171: 900171: [[__nodiscard__]] 900171: const_reverse_iterator 900171: crbegin() const noexcept 900171: { return const_reverse_iterator(end()); } 900171: 900171: 900171: 900171: 900171: 900171: 900171: [[__nodiscard__]] 900171: const_reverse_iterator 900171: crend() const noexcept 900171: { return const_reverse_iterator(begin()); } 900171: 900171: 900171: 900171: 900171: 900171: size_type 900171: size() const noexcept 900171: { return size_type(this->_M_impl._M_finish - this->_M_impl._M_start); } 900171: 900171: 900171: 900171: size_type 900171: max_size() const noexcept 900171: { return _S_max_size(_M_get_Tp_allocator()); } 900171: # 1006 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_vector.h" 3 900171: 900171: void 900171: resize(size_type __new_size) 900171: { 900171: if (__new_size > size()) 900171: _M_default_append(__new_size - size()); 900171: else if (__new_size < size()) 900171: _M_erase_at_end(this->_M_impl._M_start + __new_size); 900171: } 900171: # 1027 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_vector.h" 3 900171: 900171: void 900171: resize(size_type __new_size, const value_type& __x) 900171: { 900171: if (__new_size > size()) 900171: _M_fill_insert(end(), __new_size - size(), __x); 900171: else if (__new_size < size()) 900171: _M_erase_at_end(this->_M_impl._M_start + __new_size); 900171: } 900171: # 1061 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_vector.h" 3 900171: 900171: void 900171: shrink_to_fit() 900171: { _M_shrink_to_fit(); } 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: size_type 900171: capacity() const noexcept 900171: { return size_type(this->_M_impl._M_end_of_storage 900171: - this->_M_impl._M_start); } 900171: 900171: 900171: 900171: 900171: 900171: 900171: bool 900171: empty() const noexcept 900171: { return begin() == end(); } 900171: # 1103 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_vector.h" 3 900171: 900171: void 900171: reserve(size_type __n); 900171: # 1119 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_vector.h" 3 900171: 900171: reference 900171: operator[](size_type __n) noexcept 900171: { 900171: ; 900171: return *(this->_M_impl._M_start + __n); 900171: } 900171: # 1138 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_vector.h" 3 900171: 900171: const_reference 900171: operator[](size_type __n) const noexcept 900171: { 900171: ; 900171: return *(this->_M_impl._M_start + __n); 900171: } 900171: 900171: protected: 900171: 900171: 900171: void 900171: _M_range_check(size_type __n) const 900171: { 900171: if (__n >= this->size()) 900171: __throw_out_of_range_fmt(("vector::_M_range_check: __n " "(which is %zu) >= this->size() " "(which is %zu)") 900171: 900171: , 900171: __n, this->size()); 900171: } 900171: 900171: public: 900171: # 1171 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_vector.h" 3 900171: 900171: reference 900171: at(size_type __n) 900171: { 900171: _M_range_check(__n); 900171: return (*this)[__n]; 900171: } 900171: # 1190 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_vector.h" 3 900171: 900171: const_reference 900171: at(size_type __n) const 900171: { 900171: _M_range_check(__n); 900171: return (*this)[__n]; 900171: } 900171: 900171: 900171: 900171: 900171: 900171: 900171: reference 900171: front() noexcept 900171: { 900171: ; 900171: return *begin(); 900171: } 900171: 900171: 900171: 900171: 900171: 900171: 900171: const_reference 900171: front() const noexcept 900171: { 900171: ; 900171: return *begin(); 900171: } 900171: 900171: 900171: 900171: 900171: 900171: 900171: reference 900171: back() noexcept 900171: { 900171: ; 900171: return *(end() - 1); 900171: } 900171: 900171: 900171: 900171: 900171: 900171: 900171: const_reference 900171: back() const noexcept 900171: { 900171: ; 900171: return *(end() - 1); 900171: } 900171: # 1253 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_vector.h" 3 900171: 900171: _Tp* 900171: data() noexcept 900171: { return _M_data_ptr(this->_M_impl._M_start); } 900171: 900171: 900171: const _Tp* 900171: data() const noexcept 900171: { return _M_data_ptr(this->_M_impl._M_start); } 900171: # 1274 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_vector.h" 3 900171: 900171: void 900171: push_back(const value_type& __x) 900171: { 900171: if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage) 900171: { 900171: ; 900171: _Alloc_traits::construct(this->_M_impl, this->_M_impl._M_finish, 900171: __x); 900171: ++this->_M_impl._M_finish; 900171: ; 900171: } 900171: else 900171: _M_realloc_insert(end(), __x); 900171: } 900171: 900171: 900171: 900171: void 900171: push_back(value_type&& __x) 900171: { emplace_back(std::move(__x)); } 900171: 900171: template 900171: 900171: 900171: 900171: 900171: void 900171: 900171: emplace_back(_Args&&... __args); 900171: # 1315 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_vector.h" 3 900171: 900171: void 900171: pop_back() noexcept 900171: { 900171: ; 900171: --this->_M_impl._M_finish; 900171: _Alloc_traits::destroy(this->_M_impl, this->_M_impl._M_finish); 900171: ; 900171: } 900171: # 1338 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_vector.h" 3 900171: template 900171: 900171: iterator 900171: emplace(const_iterator __position, _Args&&... __args) 900171: { return _M_emplace_aux(__position, std::forward<_Args>(__args)...); } 900171: # 1355 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_vector.h" 3 900171: 900171: iterator 900171: insert(const_iterator __position, const value_type& __x); 900171: # 1386 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_vector.h" 3 900171: 900171: iterator 900171: insert(const_iterator __position, value_type&& __x) 900171: { return _M_insert_rval(__position, std::move(__x)); } 900171: # 1404 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_vector.h" 3 900171: 900171: iterator 900171: insert(const_iterator __position, initializer_list __l) 900171: { 900171: auto __offset = __position - cbegin(); 900171: _M_range_insert(begin() + __offset, __l.begin(), __l.end(), 900171: std::random_access_iterator_tag()); 900171: return begin() + __offset; 900171: } 900171: # 1430 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_vector.h" 3 900171: 900171: iterator 900171: insert(const_iterator __position, size_type __n, const value_type& __x) 900171: { 900171: difference_type __offset = __position - cbegin(); 900171: _M_fill_insert(begin() + __offset, __n, __x); 900171: return begin() + __offset; 900171: } 900171: # 1473 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_vector.h" 3 900171: template> 900171: 900171: iterator 900171: insert(const_iterator __position, _InputIterator __first, 900171: _InputIterator __last) 900171: { 900171: difference_type __offset = __position - cbegin(); 900171: _M_insert_dispatch(begin() + __offset, 900171: __first, __last, __false_type()); 900171: return begin() + __offset; 900171: } 900171: # 1526 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_vector.h" 3 900171: 900171: iterator 900171: 900171: erase(const_iterator __position) 900171: { return _M_erase(begin() + (__position - cbegin())); } 900171: # 1554 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_vector.h" 3 900171: 900171: iterator 900171: 900171: erase(const_iterator __first, const_iterator __last) 900171: { 900171: const auto __beg = begin(); 900171: const auto __cbeg = cbegin(); 900171: return _M_erase(__beg + (__first - __cbeg), __beg + (__last - __cbeg)); 900171: } 900171: # 1579 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_vector.h" 3 900171: 900171: void 900171: swap(vector& __x) noexcept 900171: { 900171: 900171: do { if (std::__is_constant_evaluated() && !bool(_Alloc_traits::propagate_on_container_swap::value || _M_get_Tp_allocator() == __x._M_get_Tp_allocator())) __builtin_unreachable(); } while (false) 900171: ; 900171: 900171: this->_M_impl._M_swap_data(__x._M_impl); 900171: _Alloc_traits::_S_on_swap(_M_get_Tp_allocator(), 900171: __x._M_get_Tp_allocator()); 900171: } 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: void 900171: clear() noexcept 900171: { _M_erase_at_end(this->_M_impl._M_start); } 900171: 900171: protected: 900171: 900171: 900171: 900171: 900171: template 900171: 900171: pointer 900171: _M_allocate_and_copy(size_type __n, 900171: _ForwardIterator __first, _ForwardIterator __last) 900171: { 900171: pointer __result = this->_M_allocate(__n); 900171: try 900171: { 900171: std::__uninitialized_copy_a(__first, __last, __result, 900171: _M_get_Tp_allocator()); 900171: return __result; 900171: } 900171: catch(...) 900171: { 900171: _M_deallocate(__result, __n); 900171: throw; 900171: } 900171: } 900171: # 1659 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_vector.h" 3 900171: template 900171: 900171: void 900171: _M_range_initialize(_InputIterator __first, _InputIterator __last, 900171: std::input_iterator_tag) 900171: { 900171: try { 900171: for (; __first != __last; ++__first) 900171: 900171: emplace_back(*__first); 900171: 900171: 900171: 900171: } catch(...) { 900171: clear(); 900171: throw; 900171: } 900171: } 900171: 900171: 900171: template 900171: 900171: void 900171: _M_range_initialize(_ForwardIterator __first, _ForwardIterator __last, 900171: std::forward_iterator_tag) 900171: { 900171: const size_type __n = std::distance(__first, __last); 900171: this->_M_impl._M_start 900171: = this->_M_allocate(_S_check_init_len(__n, _M_get_Tp_allocator())); 900171: this->_M_impl._M_end_of_storage = this->_M_impl._M_start + __n; 900171: this->_M_impl._M_finish = 900171: std::__uninitialized_copy_a(__first, __last, 900171: this->_M_impl._M_start, 900171: _M_get_Tp_allocator()); 900171: } 900171: 900171: 900171: 900171: 900171: void 900171: _M_fill_initialize(size_type __n, const value_type& __value) 900171: { 900171: this->_M_impl._M_finish = 900171: std::__uninitialized_fill_n_a(this->_M_impl._M_start, __n, __value, 900171: _M_get_Tp_allocator()); 900171: } 900171: 900171: 900171: 900171: 900171: void 900171: _M_default_initialize(size_type __n) 900171: { 900171: this->_M_impl._M_finish = 900171: std::__uninitialized_default_n_a(this->_M_impl._M_start, __n, 900171: _M_get_Tp_allocator()); 900171: } 900171: # 1725 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_vector.h" 3 900171: template 900171: 900171: void 900171: _M_assign_dispatch(_Integer __n, _Integer __val, __true_type) 900171: { _M_fill_assign(__n, __val); } 900171: 900171: 900171: template 900171: 900171: void 900171: _M_assign_dispatch(_InputIterator __first, _InputIterator __last, 900171: __false_type) 900171: { _M_assign_aux(__first, __last, std::__iterator_category(__first)); } 900171: 900171: 900171: template 900171: 900171: void 900171: _M_assign_aux(_InputIterator __first, _InputIterator __last, 900171: std::input_iterator_tag); 900171: 900171: 900171: template 900171: 900171: void 900171: _M_assign_aux(_ForwardIterator __first, _ForwardIterator __last, 900171: std::forward_iterator_tag); 900171: 900171: 900171: 900171: 900171: void 900171: _M_fill_assign(size_type __n, const value_type& __val); 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: template 900171: 900171: void 900171: _M_insert_dispatch(iterator __pos, _Integer __n, _Integer __val, 900171: __true_type) 900171: { _M_fill_insert(__pos, __n, __val); } 900171: 900171: 900171: template 900171: 900171: void 900171: _M_insert_dispatch(iterator __pos, _InputIterator __first, 900171: _InputIterator __last, __false_type) 900171: { 900171: _M_range_insert(__pos, __first, __last, 900171: std::__iterator_category(__first)); 900171: } 900171: 900171: 900171: template 900171: 900171: void 900171: _M_range_insert(iterator __pos, _InputIterator __first, 900171: _InputIterator __last, std::input_iterator_tag); 900171: 900171: 900171: template 900171: 900171: void 900171: _M_range_insert(iterator __pos, _ForwardIterator __first, 900171: _ForwardIterator __last, std::forward_iterator_tag); 900171: 900171: 900171: 900171: 900171: void 900171: _M_fill_insert(iterator __pos, size_type __n, const value_type& __x); 900171: 900171: 900171: 900171: 900171: void 900171: _M_default_append(size_type __n); 900171: 900171: 900171: bool 900171: _M_shrink_to_fit(); 900171: # 1824 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_vector.h" 3 900171: struct _Temporary_value 900171: { 900171: template 900171: explicit 900171: _Temporary_value(vector* __vec, _Args&&... __args) : _M_this(__vec) 900171: { 900171: _Alloc_traits::construct(_M_this->_M_impl, _M_ptr(), 900171: std::forward<_Args>(__args)...); 900171: } 900171: 900171: 900171: ~_Temporary_value() 900171: { _Alloc_traits::destroy(_M_this->_M_impl, _M_ptr()); } 900171: 900171: value_type& 900171: _M_val() noexcept { return _M_storage._M_val; } 900171: 900171: private: 900171: _Tp* 900171: _M_ptr() noexcept { return std::__addressof(_M_storage._M_val); } 900171: 900171: union _Storage 900171: { 900171: constexpr _Storage() : _M_byte() { } 900171: ~_Storage() { } 900171: _Storage& operator=(const _Storage&) = delete; 900171: unsigned char _M_byte; 900171: _Tp _M_val; 900171: }; 900171: 900171: vector* _M_this; 900171: _Storage _M_storage; 900171: }; 900171: 900171: 900171: 900171: template 900171: 900171: void 900171: _M_insert_aux(iterator __position, _Arg&& __arg); 900171: 900171: template 900171: 900171: void 900171: _M_realloc_insert(iterator __position, _Args&&... __args); 900171: 900171: 900171: 900171: iterator 900171: _M_insert_rval(const_iterator __position, value_type&& __v); 900171: 900171: 900171: template 900171: 900171: iterator 900171: _M_emplace_aux(const_iterator __position, _Args&&... __args); 900171: 900171: 900171: 900171: iterator 900171: _M_emplace_aux(const_iterator __position, value_type&& __v) 900171: { return _M_insert_rval(__position, std::move(__v)); } 900171: 900171: 900171: 900171: 900171: size_type 900171: _M_check_len(size_type __n, const char* __s) const 900171: { 900171: if (max_size() - size() < __n) 900171: __throw_length_error((__s)); 900171: 900171: const size_type __len = size() + (std::max)(size(), __n); 900171: return (__len < size() || __len > max_size()) ? max_size() : __len; 900171: } 900171: 900171: 900171: static size_type 900171: _S_check_init_len(size_type __n, const allocator_type& __a) 900171: { 900171: if (__n > _S_max_size(_Tp_alloc_type(__a))) 900171: __throw_length_error( 900171: ("cannot create std::vector larger than max_size()")); 900171: return __n; 900171: } 900171: 900171: static size_type 900171: _S_max_size(const _Tp_alloc_type& __a) noexcept 900171: { 900171: 900171: 900171: 900171: const size_t __diffmax 900171: = __gnu_cxx::__numeric_traits::__max / sizeof(_Tp); 900171: const size_t __allocmax = _Alloc_traits::max_size(__a); 900171: return (std::min)(__diffmax, __allocmax); 900171: } 900171: 900171: 900171: 900171: 900171: 900171: 900171: void 900171: _M_erase_at_end(pointer __pos) noexcept 900171: { 900171: if (size_type __n = this->_M_impl._M_finish - __pos) 900171: { 900171: std::_Destroy(__pos, this->_M_impl._M_finish, 900171: _M_get_Tp_allocator()); 900171: this->_M_impl._M_finish = __pos; 900171: ; 900171: } 900171: } 900171: 900171: 900171: iterator 900171: _M_erase(iterator __position); 900171: 900171: 900171: iterator 900171: _M_erase(iterator __first, iterator __last); 900171: 900171: 900171: private: 900171: 900171: 900171: 900171: 900171: void 900171: _M_move_assign(vector&& __x, true_type) noexcept 900171: { 900171: vector __tmp(get_allocator()); 900171: this->_M_impl._M_swap_data(__x._M_impl); 900171: __tmp._M_impl._M_swap_data(__x._M_impl); 900171: std::__alloc_on_move(_M_get_Tp_allocator(), __x._M_get_Tp_allocator()); 900171: } 900171: 900171: 900171: 900171: 900171: void 900171: _M_move_assign(vector&& __x, false_type) 900171: { 900171: if (__x._M_get_Tp_allocator() == this->_M_get_Tp_allocator()) 900171: _M_move_assign(std::move(__x), true_type()); 900171: else 900171: { 900171: 900171: 900171: this->_M_assign_aux(std::make_move_iterator(__x.begin()), 900171: std::make_move_iterator(__x.end()), 900171: std::random_access_iterator_tag()); 900171: __x.clear(); 900171: } 900171: } 900171: 900171: 900171: template 900171: 900171: _Up* 900171: _M_data_ptr(_Up* __ptr) const noexcept 900171: { return __ptr; } 900171: 900171: 900171: template 900171: 900171: typename std::pointer_traits<_Ptr>::element_type* 900171: _M_data_ptr(_Ptr __ptr) const 900171: { return empty() ? nullptr : std::__to_address(__ptr); } 900171: # 2010 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_vector.h" 3 900171: }; 900171: # 2032 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_vector.h" 3 900171: template 900171: 900171: inline bool 900171: operator==(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y) 900171: { return (__x.size() == __y.size() 900171: && std::equal(__x.begin(), __x.end(), __y.begin())); } 900171: # 2072 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_vector.h" 3 900171: template 900171: inline bool 900171: operator<(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y) 900171: { return std::lexicographical_compare(__x.begin(), __x.end(), 900171: __y.begin(), __y.end()); } 900171: 900171: 900171: template 900171: inline bool 900171: operator!=(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y) 900171: { return !(__x == __y); } 900171: 900171: 900171: template 900171: inline bool 900171: operator>(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y) 900171: { return __y < __x; } 900171: 900171: 900171: template 900171: inline bool 900171: operator<=(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y) 900171: { return !(__y < __x); } 900171: 900171: 900171: template 900171: inline bool 900171: operator>=(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y) 900171: { return !(__x < __y); } 900171: 900171: 900171: 900171: template 900171: 900171: inline void 900171: swap(vector<_Tp, _Alloc>& __x, vector<_Tp, _Alloc>& __y) 900171: noexcept(noexcept(__x.swap(__y))) 900171: { __x.swap(__y); } 900171: 900171: 900171: # 2127 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_vector.h" 3 900171: 900171: } 900171: # 65 "/usr/aarch64-linux-gnu/include/c++/12/vector" 2 3 900171: # 1 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_bvector.h" 1 3 900171: # 64 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_bvector.h" 3 900171: namespace std __attribute__ ((__visibility__ ("default"))) 900171: { 900171: 900171: 900171: typedef unsigned long _Bit_type; 900171: enum { _S_word_bit = int(8 * sizeof(_Bit_type)) }; 900171: 900171: __attribute__((__nonnull__)) 900171: 900171: void 900171: __fill_bvector_n(_Bit_type*, size_t, bool) noexcept; 900171: 900171: 900171: 900171: struct _Bit_reference 900171: { 900171: _Bit_type * _M_p; 900171: _Bit_type _M_mask; 900171: 900171: 900171: _Bit_reference(_Bit_type * __x, _Bit_type __y) 900171: : _M_p(__x), _M_mask(__y) { } 900171: 900171: 900171: _Bit_reference() noexcept : _M_p(0), _M_mask(0) { } 900171: 900171: 900171: _Bit_reference(const _Bit_reference&) = default; 900171: 900171: 900171: 900171: operator bool() const noexcept 900171: { return !!(*_M_p & _M_mask); } 900171: 900171: 900171: _Bit_reference& 900171: operator=(bool __x) noexcept 900171: { 900171: if (__x) 900171: *_M_p |= _M_mask; 900171: else 900171: *_M_p &= ~_M_mask; 900171: return *this; 900171: } 900171: 900171: 900171: _Bit_reference& 900171: operator=(const _Bit_reference& __x) noexcept 900171: { return *this = bool(__x); } 900171: 900171: 900171: bool 900171: operator==(const _Bit_reference& __x) const 900171: { return bool(*this) == bool(__x); } 900171: 900171: 900171: bool 900171: operator<(const _Bit_reference& __x) const 900171: { return !bool(*this) && bool(__x); } 900171: 900171: 900171: void 900171: flip() noexcept 900171: { *_M_p ^= _M_mask; } 900171: 900171: 900171: 900171: friend void 900171: swap(_Bit_reference __x, _Bit_reference __y) noexcept 900171: { 900171: bool __tmp = __x; 900171: __x = __y; 900171: __y = __tmp; 900171: } 900171: 900171: 900171: friend void 900171: swap(_Bit_reference __x, bool& __y) noexcept 900171: { 900171: bool __tmp = __x; 900171: __x = __y; 900171: __y = __tmp; 900171: } 900171: 900171: 900171: friend void 900171: swap(bool& __x, _Bit_reference __y) noexcept 900171: { 900171: bool __tmp = __x; 900171: __x = __y; 900171: __y = __tmp; 900171: } 900171: 900171: }; 900171: 900171: 900171: #pragma GCC diagnostic push 900171: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 900171: struct _Bit_iterator_base 900171: : public std::iterator 900171: { 900171: _Bit_type * _M_p; 900171: unsigned int _M_offset; 900171: 900171: 900171: _Bit_iterator_base(_Bit_type * __x, unsigned int __y) 900171: : _M_p(__x), _M_offset(__y) { } 900171: 900171: 900171: void 900171: _M_bump_up() 900171: { 900171: if (_M_offset++ == int(_S_word_bit) - 1) 900171: { 900171: _M_offset = 0; 900171: ++_M_p; 900171: } 900171: } 900171: 900171: 900171: void 900171: _M_bump_down() 900171: { 900171: if (_M_offset-- == 0) 900171: { 900171: _M_offset = int(_S_word_bit) - 1; 900171: --_M_p; 900171: } 900171: } 900171: 900171: 900171: void 900171: _M_incr(ptrdiff_t __i) 900171: { 900171: difference_type __n = __i + _M_offset; 900171: _M_p += __n / int(_S_word_bit); 900171: __n = __n % int(_S_word_bit); 900171: if (__n < 0) 900171: { 900171: __n += int(_S_word_bit); 900171: --_M_p; 900171: } 900171: _M_offset = static_cast(__n); 900171: } 900171: 900171: 900171: friend bool 900171: operator==(const _Bit_iterator_base& __x, const _Bit_iterator_base& __y) 900171: { return __x._M_p == __y._M_p && __x._M_offset == __y._M_offset; } 900171: # 225 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_bvector.h" 3 900171: 900171: friend bool 900171: operator<(const _Bit_iterator_base& __x, const _Bit_iterator_base& __y) 900171: { 900171: return __x._M_p < __y._M_p 900171: || (__x._M_p == __y._M_p && __x._M_offset < __y._M_offset); 900171: } 900171: 900171: 900171: friend bool 900171: operator!=(const _Bit_iterator_base& __x, const _Bit_iterator_base& __y) 900171: { return !(__x == __y); } 900171: 900171: 900171: friend bool 900171: operator>(const _Bit_iterator_base& __x, const _Bit_iterator_base& __y) 900171: { return __y < __x; } 900171: 900171: 900171: friend bool 900171: operator<=(const _Bit_iterator_base& __x, const _Bit_iterator_base& __y) 900171: { return !(__y < __x); } 900171: 900171: 900171: friend bool 900171: operator>=(const _Bit_iterator_base& __x, const _Bit_iterator_base& __y) 900171: { return !(__x < __y); } 900171: 900171: 900171: friend ptrdiff_t 900171: operator-(const _Bit_iterator_base& __x, const _Bit_iterator_base& __y) 900171: { 900171: return (int(_S_word_bit) * (__x._M_p - __y._M_p) 900171: + __x._M_offset - __y._M_offset); 900171: } 900171: }; 900171: #pragma GCC diagnostic pop 900171: 900171: struct _Bit_iterator : public _Bit_iterator_base 900171: { 900171: typedef _Bit_reference reference; 900171: 900171: 900171: 900171: typedef _Bit_reference* pointer; 900171: 900171: typedef _Bit_iterator iterator; 900171: 900171: 900171: _Bit_iterator() : _Bit_iterator_base(0, 0) { } 900171: 900171: 900171: _Bit_iterator(_Bit_type * __x, unsigned int __y) 900171: : _Bit_iterator_base(__x, __y) { } 900171: 900171: 900171: iterator 900171: _M_const_cast() const 900171: { return *this; } 900171: 900171: 900171: reference 900171: operator*() const 900171: { return reference(_M_p, 1UL << _M_offset); } 900171: 900171: 900171: iterator& 900171: operator++() 900171: { 900171: _M_bump_up(); 900171: return *this; 900171: } 900171: 900171: 900171: iterator 900171: operator++(int) 900171: { 900171: iterator __tmp = *this; 900171: _M_bump_up(); 900171: return __tmp; 900171: } 900171: 900171: 900171: iterator& 900171: operator--() 900171: { 900171: _M_bump_down(); 900171: return *this; 900171: } 900171: 900171: 900171: iterator 900171: operator--(int) 900171: { 900171: iterator __tmp = *this; 900171: _M_bump_down(); 900171: return __tmp; 900171: } 900171: 900171: 900171: iterator& 900171: operator+=(difference_type __i) 900171: { 900171: _M_incr(__i); 900171: return *this; 900171: } 900171: 900171: 900171: iterator& 900171: operator-=(difference_type __i) 900171: { 900171: *this += -__i; 900171: return *this; 900171: } 900171: 900171: 900171: reference 900171: operator[](difference_type __i) const 900171: { return *(*this + __i); } 900171: 900171: 900171: friend iterator 900171: operator+(const iterator& __x, difference_type __n) 900171: { 900171: iterator __tmp = __x; 900171: __tmp += __n; 900171: return __tmp; 900171: } 900171: 900171: 900171: friend iterator 900171: operator+(difference_type __n, const iterator& __x) 900171: { return __x + __n; } 900171: 900171: 900171: friend iterator 900171: operator-(const iterator& __x, difference_type __n) 900171: { 900171: iterator __tmp = __x; 900171: __tmp -= __n; 900171: return __tmp; 900171: } 900171: }; 900171: 900171: struct _Bit_const_iterator : public _Bit_iterator_base 900171: { 900171: typedef bool reference; 900171: typedef bool const_reference; 900171: 900171: 900171: 900171: typedef const bool* pointer; 900171: 900171: typedef _Bit_const_iterator const_iterator; 900171: 900171: 900171: _Bit_const_iterator() : _Bit_iterator_base(0, 0) { } 900171: 900171: 900171: _Bit_const_iterator(_Bit_type * __x, unsigned int __y) 900171: : _Bit_iterator_base(__x, __y) { } 900171: 900171: 900171: _Bit_const_iterator(const _Bit_iterator& __x) 900171: : _Bit_iterator_base(__x._M_p, __x._M_offset) { } 900171: 900171: 900171: _Bit_iterator 900171: _M_const_cast() const 900171: { return _Bit_iterator(_M_p, _M_offset); } 900171: 900171: 900171: const_reference 900171: operator*() const 900171: { return _Bit_reference(_M_p, 1UL << _M_offset); } 900171: 900171: 900171: const_iterator& 900171: operator++() 900171: { 900171: _M_bump_up(); 900171: return *this; 900171: } 900171: 900171: 900171: const_iterator 900171: operator++(int) 900171: { 900171: const_iterator __tmp = *this; 900171: _M_bump_up(); 900171: return __tmp; 900171: } 900171: 900171: 900171: const_iterator& 900171: operator--() 900171: { 900171: _M_bump_down(); 900171: return *this; 900171: } 900171: 900171: 900171: const_iterator 900171: operator--(int) 900171: { 900171: const_iterator __tmp = *this; 900171: _M_bump_down(); 900171: return __tmp; 900171: } 900171: 900171: 900171: const_iterator& 900171: operator+=(difference_type __i) 900171: { 900171: _M_incr(__i); 900171: return *this; 900171: } 900171: 900171: 900171: const_iterator& 900171: operator-=(difference_type __i) 900171: { 900171: *this += -__i; 900171: return *this; 900171: } 900171: 900171: 900171: const_reference 900171: operator[](difference_type __i) const 900171: { return *(*this + __i); } 900171: 900171: 900171: friend const_iterator 900171: operator+(const const_iterator& __x, difference_type __n) 900171: { 900171: const_iterator __tmp = __x; 900171: __tmp += __n; 900171: return __tmp; 900171: } 900171: 900171: 900171: friend const_iterator 900171: operator-(const const_iterator& __x, difference_type __n) 900171: { 900171: const_iterator __tmp = __x; 900171: __tmp -= __n; 900171: return __tmp; 900171: } 900171: 900171: 900171: friend const_iterator 900171: operator+(difference_type __n, const const_iterator& __x) 900171: { return __x + __n; } 900171: }; 900171: 900171: template 900171: struct _Bvector_base 900171: { 900171: typedef typename __gnu_cxx::__alloc_traits<_Alloc>::template 900171: rebind<_Bit_type>::other _Bit_alloc_type; 900171: typedef typename __gnu_cxx::__alloc_traits<_Bit_alloc_type> 900171: _Bit_alloc_traits; 900171: typedef typename _Bit_alloc_traits::pointer _Bit_pointer; 900171: 900171: struct _Bvector_impl_data 900171: { 900171: 900171: _Bit_iterator _M_start; 900171: # 502 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_bvector.h" 3 900171: _Bit_iterator _M_finish; 900171: _Bit_pointer _M_end_of_storage; 900171: 900171: 900171: _Bvector_impl_data() noexcept 900171: : _M_start(), _M_finish(), _M_end_of_storage() 900171: { } 900171: 900171: 900171: _Bvector_impl_data(const _Bvector_impl_data&) = default; 900171: 900171: _Bvector_impl_data& 900171: operator=(const _Bvector_impl_data&) = default; 900171: 900171: 900171: _Bvector_impl_data(_Bvector_impl_data&& __x) noexcept 900171: : _Bvector_impl_data(__x) 900171: { __x._M_reset(); } 900171: 900171: 900171: void 900171: _M_move_data(_Bvector_impl_data&& __x) noexcept 900171: { 900171: *this = __x; 900171: __x._M_reset(); 900171: } 900171: 900171: 900171: 900171: void 900171: _M_reset() noexcept 900171: { *this = _Bvector_impl_data(); } 900171: 900171: 900171: void 900171: _M_swap_data(_Bvector_impl_data& __x) noexcept 900171: { 900171: 900171: 900171: std::swap(*this, __x); 900171: } 900171: }; 900171: 900171: struct _Bvector_impl 900171: : public _Bit_alloc_type, public _Bvector_impl_data 900171: { 900171: 900171: _Bvector_impl() noexcept(is_nothrow_default_constructible<_Bit_alloc_type>::value) 900171: 900171: : _Bit_alloc_type() 900171: { } 900171: 900171: 900171: _Bvector_impl(const _Bit_alloc_type& __a) noexcept 900171: : _Bit_alloc_type(__a) 900171: { } 900171: 900171: 900171: 900171: 900171: 900171: _Bvector_impl(_Bvector_impl&& __x) noexcept 900171: : _Bit_alloc_type(std::move(__x)), _Bvector_impl_data(std::move(__x)) 900171: { } 900171: 900171: 900171: _Bvector_impl(_Bit_alloc_type&& __a, _Bvector_impl&& __x) noexcept 900171: : _Bit_alloc_type(std::move(__a)), _Bvector_impl_data(std::move(__x)) 900171: { } 900171: 900171: 900171: 900171: _Bit_type* 900171: _M_end_addr() const noexcept 900171: { 900171: if (this->_M_end_of_storage) 900171: return std::__addressof(this->_M_end_of_storage[-1]) + 1; 900171: return 0; 900171: } 900171: }; 900171: 900171: public: 900171: typedef _Alloc allocator_type; 900171: 900171: 900171: _Bit_alloc_type& 900171: _M_get_Bit_allocator() noexcept 900171: { return this->_M_impl; } 900171: 900171: 900171: const _Bit_alloc_type& 900171: _M_get_Bit_allocator() const noexcept 900171: { return this->_M_impl; } 900171: 900171: 900171: allocator_type 900171: get_allocator() const noexcept 900171: { return allocator_type(_M_get_Bit_allocator()); } 900171: 900171: 900171: _Bvector_base() = default; 900171: 900171: 900171: 900171: 900171: 900171: _Bvector_base(const allocator_type& __a) 900171: : _M_impl(__a) { } 900171: 900171: 900171: _Bvector_base(_Bvector_base&&) = default; 900171: 900171: 900171: _Bvector_base(_Bvector_base&& __x, const allocator_type& __a) noexcept 900171: : _M_impl(_Bit_alloc_type(__a), std::move(__x._M_impl)) 900171: { } 900171: 900171: 900171: 900171: ~_Bvector_base() 900171: { this->_M_deallocate(); } 900171: 900171: protected: 900171: _Bvector_impl _M_impl; 900171: 900171: 900171: _Bit_pointer 900171: _M_allocate(size_t __n) 900171: { 900171: _Bit_pointer __p = _Bit_alloc_traits::allocate(_M_impl, _S_nword(__n)); 900171: # 640 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_bvector.h" 3 900171: return __p; 900171: } 900171: 900171: 900171: void 900171: _M_deallocate() 900171: { 900171: if (_M_impl._M_start._M_p) 900171: { 900171: const size_t __n = _M_impl._M_end_addr() - _M_impl._M_start._M_p; 900171: _Bit_alloc_traits::deallocate(_M_impl, 900171: _M_impl._M_end_of_storage - __n, 900171: __n); 900171: _M_impl._M_reset(); 900171: } 900171: } 900171: 900171: 900171: 900171: void 900171: _M_move_data(_Bvector_base&& __x) noexcept 900171: { _M_impl._M_move_data(std::move(__x._M_impl)); } 900171: 900171: 900171: constexpr 900171: static size_t 900171: _S_nword(size_t __n) 900171: { return (__n + int(_S_word_bit) - 1) / int(_S_word_bit); } 900171: }; 900171: # 689 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_bvector.h" 3 900171: template 900171: class vector : protected _Bvector_base<_Alloc> 900171: { 900171: typedef _Bvector_base<_Alloc> _Base; 900171: typedef typename _Base::_Bit_pointer _Bit_pointer; 900171: typedef typename _Base::_Bit_alloc_traits _Bit_alloc_traits; 900171: 900171: 900171: friend struct std::hash; 900171: 900171: 900171: public: 900171: typedef bool value_type; 900171: typedef size_t size_type; 900171: typedef ptrdiff_t difference_type; 900171: typedef _Bit_reference reference; 900171: typedef bool const_reference; 900171: typedef _Bit_reference* pointer; 900171: typedef const bool* const_pointer; 900171: typedef _Bit_iterator iterator; 900171: typedef _Bit_const_iterator const_iterator; 900171: typedef std::reverse_iterator const_reverse_iterator; 900171: typedef std::reverse_iterator reverse_iterator; 900171: typedef _Alloc allocator_type; 900171: 900171: 900171: allocator_type 900171: get_allocator() const 900171: { return _Base::get_allocator(); } 900171: 900171: protected: 900171: using _Base::_M_allocate; 900171: using _Base::_M_deallocate; 900171: using _Base::_S_nword; 900171: using _Base::_M_get_Bit_allocator; 900171: 900171: public: 900171: 900171: vector() = default; 900171: 900171: 900171: 900171: 900171: 900171: explicit 900171: vector(const allocator_type& __a) 900171: : _Base(__a) { } 900171: 900171: 900171: 900171: explicit 900171: vector(size_type __n, const allocator_type& __a = allocator_type()) 900171: : vector(__n, false, __a) 900171: { } 900171: 900171: 900171: vector(size_type __n, const bool& __value, 900171: const allocator_type& __a = allocator_type()) 900171: 900171: 900171: 900171: 900171: 900171: : _Base(__a) 900171: { 900171: _M_initialize(__n); 900171: _M_initialize_value(__value); 900171: } 900171: 900171: 900171: vector(const vector& __x) 900171: : _Base(_Bit_alloc_traits::_S_select_on_copy(__x._M_get_Bit_allocator())) 900171: { 900171: _M_initialize(__x.size()); 900171: _M_copy_aligned(__x.begin(), __x.end(), begin()); 900171: } 900171: 900171: 900171: vector(vector&&) = default; 900171: 900171: private: 900171: 900171: vector(vector&& __x, const allocator_type& __a, true_type) noexcept 900171: : _Base(std::move(__x), __a) 900171: { } 900171: 900171: 900171: vector(vector&& __x, const allocator_type& __a, false_type) 900171: : _Base(__a) 900171: { 900171: if (__x.get_allocator() == __a) 900171: this->_M_move_data(std::move(__x)); 900171: else 900171: { 900171: _M_initialize(__x.size()); 900171: _M_copy_aligned(__x.begin(), __x.end(), begin()); 900171: __x.clear(); 900171: } 900171: } 900171: 900171: public: 900171: 900171: vector(vector&& __x, const __type_identity_t& __a) 900171: noexcept(_Bit_alloc_traits::_S_always_equal()) 900171: : vector(std::move(__x), __a, 900171: typename _Bit_alloc_traits::is_always_equal{}) 900171: { } 900171: 900171: 900171: vector(const vector& __x, const __type_identity_t& __a) 900171: : _Base(__a) 900171: { 900171: _M_initialize(__x.size()); 900171: _M_copy_aligned(__x.begin(), __x.end(), begin()); 900171: } 900171: 900171: 900171: vector(initializer_list __l, 900171: const allocator_type& __a = allocator_type()) 900171: : _Base(__a) 900171: { 900171: _M_initialize_range(__l.begin(), __l.end(), 900171: random_access_iterator_tag()); 900171: } 900171: 900171: 900171: 900171: template> 900171: 900171: vector(_InputIterator __first, _InputIterator __last, 900171: const allocator_type& __a = allocator_type()) 900171: : _Base(__a) 900171: { 900171: _M_initialize_range(__first, __last, 900171: std::__iterator_category(__first)); 900171: } 900171: # 838 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_bvector.h" 3 900171: 900171: ~vector() noexcept { } 900171: 900171: 900171: vector& 900171: operator=(const vector& __x) 900171: { 900171: if (&__x == this) 900171: return *this; 900171: 900171: if (_Bit_alloc_traits::_S_propagate_on_copy_assign()) 900171: { 900171: if (this->_M_get_Bit_allocator() != __x._M_get_Bit_allocator()) 900171: { 900171: this->_M_deallocate(); 900171: std::__alloc_on_copy(_M_get_Bit_allocator(), 900171: __x._M_get_Bit_allocator()); 900171: _M_initialize(__x.size()); 900171: } 900171: else 900171: std::__alloc_on_copy(_M_get_Bit_allocator(), 900171: __x._M_get_Bit_allocator()); 900171: } 900171: 900171: if (__x.size() > capacity()) 900171: { 900171: this->_M_deallocate(); 900171: _M_initialize(__x.size()); 900171: } 900171: this->_M_impl._M_finish = _M_copy_aligned(__x.begin(), __x.end(), 900171: begin()); 900171: return *this; 900171: } 900171: 900171: 900171: 900171: vector& 900171: operator=(vector&& __x) noexcept(_Bit_alloc_traits::_S_nothrow_move()) 900171: { 900171: if (_Bit_alloc_traits::_S_propagate_on_move_assign() 900171: || this->_M_get_Bit_allocator() == __x._M_get_Bit_allocator()) 900171: { 900171: this->_M_deallocate(); 900171: this->_M_move_data(std::move(__x)); 900171: std::__alloc_on_move(_M_get_Bit_allocator(), 900171: __x._M_get_Bit_allocator()); 900171: } 900171: else 900171: { 900171: if (__x.size() > capacity()) 900171: { 900171: this->_M_deallocate(); 900171: _M_initialize(__x.size()); 900171: } 900171: this->_M_impl._M_finish = _M_copy_aligned(__x.begin(), __x.end(), 900171: begin()); 900171: __x.clear(); 900171: } 900171: return *this; 900171: } 900171: 900171: 900171: vector& 900171: operator=(initializer_list __l) 900171: { 900171: this->assign(__l.begin(), __l.end()); 900171: return *this; 900171: } 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: void 900171: assign(size_type __n, const bool& __x) 900171: { _M_fill_assign(__n, __x); } 900171: 900171: 900171: template> 900171: 900171: void 900171: assign(_InputIterator __first, _InputIterator __last) 900171: { _M_assign_aux(__first, __last, std::__iterator_category(__first)); } 900171: # 936 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_bvector.h" 3 900171: 900171: void 900171: assign(initializer_list __l) 900171: { _M_assign_aux(__l.begin(), __l.end(), random_access_iterator_tag()); } 900171: 900171: 900171: 900171: iterator 900171: begin() noexcept 900171: { return iterator(this->_M_impl._M_start._M_p, 0); } 900171: 900171: 900171: const_iterator 900171: begin() const noexcept 900171: { return const_iterator(this->_M_impl._M_start._M_p, 0); } 900171: 900171: 900171: iterator 900171: end() noexcept 900171: { return this->_M_impl._M_finish; } 900171: 900171: 900171: const_iterator 900171: end() const noexcept 900171: { return this->_M_impl._M_finish; } 900171: 900171: 900171: reverse_iterator 900171: rbegin() noexcept 900171: { return reverse_iterator(end()); } 900171: 900171: 900171: const_reverse_iterator 900171: rbegin() const noexcept 900171: { return const_reverse_iterator(end()); } 900171: 900171: 900171: reverse_iterator 900171: rend() noexcept 900171: { return reverse_iterator(begin()); } 900171: 900171: 900171: const_reverse_iterator 900171: rend() const noexcept 900171: { return const_reverse_iterator(begin()); } 900171: 900171: 900171: [[__nodiscard__]] 900171: const_iterator 900171: cbegin() const noexcept 900171: { return const_iterator(this->_M_impl._M_start._M_p, 0); } 900171: 900171: [[__nodiscard__]] 900171: const_iterator 900171: cend() const noexcept 900171: { return this->_M_impl._M_finish; } 900171: 900171: [[__nodiscard__]] 900171: const_reverse_iterator 900171: crbegin() const noexcept 900171: { return const_reverse_iterator(end()); } 900171: 900171: [[__nodiscard__]] 900171: const_reverse_iterator 900171: crend() const noexcept 900171: { return const_reverse_iterator(begin()); } 900171: 900171: 900171: 900171: size_type 900171: size() const noexcept 900171: { return size_type(end() - begin()); } 900171: 900171: 900171: size_type 900171: max_size() const noexcept 900171: { 900171: const size_type __isize = 900171: __gnu_cxx::__numeric_traits::__max 900171: - int(_S_word_bit) + 1; 900171: const size_type __asize 900171: = _Bit_alloc_traits::max_size(_M_get_Bit_allocator()); 900171: return (__asize <= __isize / int(_S_word_bit) 900171: ? __asize * int(_S_word_bit) : __isize); 900171: } 900171: 900171: 900171: size_type 900171: capacity() const noexcept 900171: { return size_type(const_iterator(this->_M_impl._M_end_addr(), 0) 900171: - begin()); } 900171: 900171: 900171: bool 900171: empty() const noexcept 900171: { return begin() == end(); } 900171: 900171: 900171: reference 900171: operator[](size_type __n) 900171: { return begin()[__n]; } 900171: 900171: 900171: const_reference 900171: operator[](size_type __n) const 900171: { return begin()[__n]; } 900171: 900171: protected: 900171: 900171: void 900171: _M_range_check(size_type __n) const 900171: { 900171: if (__n >= this->size()) 900171: __throw_out_of_range_fmt(("vector::_M_range_check: __n " "(which is %zu) >= this->size() " "(which is %zu)") 900171: 900171: , 900171: __n, this->size()); 900171: } 900171: 900171: public: 900171: 900171: reference 900171: at(size_type __n) 900171: { 900171: _M_range_check(__n); 900171: return (*this)[__n]; 900171: } 900171: 900171: 900171: const_reference 900171: at(size_type __n) const 900171: { 900171: _M_range_check(__n); 900171: return (*this)[__n]; 900171: } 900171: 900171: 900171: void 900171: reserve(size_type __n) 900171: { 900171: if (__n > max_size()) 900171: __throw_length_error(("vector::reserve")); 900171: if (capacity() < __n) 900171: _M_reallocate(__n); 900171: } 900171: 900171: 900171: reference 900171: front() 900171: { return *begin(); } 900171: 900171: 900171: const_reference 900171: front() const 900171: { return *begin(); } 900171: 900171: 900171: reference 900171: back() 900171: { return *(end() - 1); } 900171: 900171: 900171: const_reference 900171: back() const 900171: { return *(end() - 1); } 900171: 900171: 900171: void 900171: push_back(bool __x) 900171: { 900171: if (this->_M_impl._M_finish._M_p != this->_M_impl._M_end_addr()) 900171: *this->_M_impl._M_finish++ = __x; 900171: else 900171: _M_insert_aux(end(), __x); 900171: } 900171: 900171: 900171: void 900171: swap(vector& __x) noexcept 900171: { 900171: 900171: do { if (std::__is_constant_evaluated() && !bool(_Bit_alloc_traits::propagate_on_container_swap::value || _M_get_Bit_allocator() == __x._M_get_Bit_allocator())) __builtin_unreachable(); } while (false) 900171: ; 900171: 900171: this->_M_impl._M_swap_data(__x._M_impl); 900171: _Bit_alloc_traits::_S_on_swap(_M_get_Bit_allocator(), 900171: __x._M_get_Bit_allocator()); 900171: } 900171: 900171: 900171: 900171: static void 900171: swap(reference __x, reference __y) noexcept 900171: { 900171: bool __tmp = __x; 900171: __x = __y; 900171: __y = __tmp; 900171: } 900171: 900171: 900171: iterator 900171: 900171: insert(const_iterator __position, const bool& __x) 900171: 900171: 900171: 900171: { 900171: const difference_type __n = __position - begin(); 900171: if (this->_M_impl._M_finish._M_p != this->_M_impl._M_end_addr() 900171: && __position == end()) 900171: *this->_M_impl._M_finish++ = __x; 900171: else 900171: _M_insert_aux(__position._M_const_cast(), __x); 900171: return begin() + __n; 900171: } 900171: 900171: 900171: __attribute__ ((__deprecated__ ("use '" "insert(position, false)" "' instead"))) 900171: iterator 900171: insert(const_iterator __position) 900171: { return this->insert(__position._M_const_cast(), false); } 900171: 900171: 900171: 900171: template> 900171: 900171: iterator 900171: insert(const_iterator __position, 900171: _InputIterator __first, _InputIterator __last) 900171: { 900171: difference_type __offset = __position - cbegin(); 900171: _M_insert_range(__position._M_const_cast(), 900171: __first, __last, 900171: std::__iterator_category(__first)); 900171: return begin() + __offset; 900171: } 900171: # 1186 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_bvector.h" 3 900171: 900171: iterator 900171: insert(const_iterator __position, size_type __n, const bool& __x) 900171: { 900171: difference_type __offset = __position - cbegin(); 900171: _M_fill_insert(__position._M_const_cast(), __n, __x); 900171: return begin() + __offset; 900171: } 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: iterator 900171: insert(const_iterator __p, initializer_list __l) 900171: { return this->insert(__p, __l.begin(), __l.end()); } 900171: 900171: 900171: 900171: void 900171: pop_back() 900171: { --this->_M_impl._M_finish; } 900171: 900171: 900171: iterator 900171: 900171: erase(const_iterator __position) 900171: 900171: 900171: 900171: { return _M_erase(__position._M_const_cast()); } 900171: 900171: 900171: iterator 900171: 900171: erase(const_iterator __first, const_iterator __last) 900171: 900171: 900171: 900171: { return _M_erase(__first._M_const_cast(), __last._M_const_cast()); } 900171: 900171: 900171: void 900171: resize(size_type __new_size, bool __x = bool()) 900171: { 900171: if (__new_size < size()) 900171: _M_erase_at_end(begin() + difference_type(__new_size)); 900171: else 900171: insert(end(), __new_size - size(), __x); 900171: } 900171: 900171: 900171: 900171: void 900171: shrink_to_fit() 900171: { _M_shrink_to_fit(); } 900171: 900171: 900171: 900171: void 900171: flip() noexcept 900171: { 900171: _Bit_type * const __end = this->_M_impl._M_end_addr(); 900171: for (_Bit_type * __p = this->_M_impl._M_start._M_p; __p != __end; ++__p) 900171: *__p = ~*__p; 900171: } 900171: 900171: 900171: void 900171: clear() noexcept 900171: { _M_erase_at_end(begin()); } 900171: 900171: 900171: template 900171: 900171: 900171: 900171: 900171: void 900171: 900171: emplace_back(_Args&&... __args) 900171: { 900171: push_back(bool(__args...)); 900171: 900171: 900171: 900171: } 900171: 900171: template 900171: 900171: iterator 900171: emplace(const_iterator __pos, _Args&&... __args) 900171: { return insert(__pos, bool(__args...)); } 900171: 900171: 900171: protected: 900171: 900171: 900171: iterator 900171: _M_copy_aligned(const_iterator __first, const_iterator __last, 900171: iterator __result) 900171: { 900171: _Bit_type* __q = std::copy(__first._M_p, __last._M_p, __result._M_p); 900171: return std::copy(const_iterator(__last._M_p, 0), __last, 900171: iterator(__q, 0)); 900171: } 900171: 900171: 900171: void 900171: _M_initialize(size_type __n) 900171: { 900171: if (__n) 900171: { 900171: _Bit_pointer __q = this->_M_allocate(__n); 900171: this->_M_impl._M_end_of_storage = __q + _S_nword(__n); 900171: iterator __start = iterator(std::__addressof(*__q), 0); 900171: this->_M_impl._M_start = __start; 900171: this->_M_impl._M_finish = __start + difference_type(__n); 900171: } 900171: } 900171: 900171: 900171: void 900171: _M_initialize_value(bool __x) noexcept 900171: { 900171: if (_Bit_type* __p = this->_M_impl._M_start._M_p) 900171: __fill_bvector_n(__p, this->_M_impl._M_end_addr() - __p, __x); 900171: } 900171: 900171: 900171: void 900171: _M_reallocate(size_type __n); 900171: 900171: 900171: 900171: bool 900171: _M_shrink_to_fit(); 900171: # 1347 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_bvector.h" 3 900171: template 900171: 900171: void 900171: _M_initialize_range(_InputIterator __first, _InputIterator __last, 900171: std::input_iterator_tag) 900171: { 900171: for (; __first != __last; ++__first) 900171: push_back(*__first); 900171: } 900171: 900171: template 900171: 900171: void 900171: _M_initialize_range(_ForwardIterator __first, _ForwardIterator __last, 900171: std::forward_iterator_tag) 900171: { 900171: const size_type __n = std::distance(__first, __last); 900171: _M_initialize(__n); 900171: std::copy(__first, __last, begin()); 900171: } 900171: # 1383 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_bvector.h" 3 900171: 900171: void 900171: _M_fill_assign(size_t __n, bool __x) 900171: { 900171: if (__n > size()) 900171: { 900171: _M_initialize_value(__x); 900171: insert(end(), __n - size(), __x); 900171: } 900171: else 900171: { 900171: _M_erase_at_end(begin() + __n); 900171: _M_initialize_value(__x); 900171: } 900171: } 900171: 900171: template 900171: 900171: void 900171: _M_assign_aux(_InputIterator __first, _InputIterator __last, 900171: std::input_iterator_tag) 900171: { 900171: iterator __cur = begin(); 900171: for (; __first != __last && __cur != end(); ++__cur, (void)++__first) 900171: *__cur = *__first; 900171: if (__first == __last) 900171: _M_erase_at_end(__cur); 900171: else 900171: insert(end(), __first, __last); 900171: } 900171: 900171: template 900171: 900171: void 900171: _M_assign_aux(_ForwardIterator __first, _ForwardIterator __last, 900171: std::forward_iterator_tag) 900171: { 900171: const size_type __len = std::distance(__first, __last); 900171: if (__len < size()) 900171: _M_erase_at_end(std::copy(__first, __last, begin())); 900171: else 900171: { 900171: _ForwardIterator __mid = __first; 900171: std::advance(__mid, size()); 900171: std::copy(__first, __mid, begin()); 900171: insert(end(), __mid, __last); 900171: } 900171: } 900171: # 1450 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_bvector.h" 3 900171: 900171: void 900171: _M_fill_insert(iterator __position, size_type __n, bool __x); 900171: 900171: template 900171: 900171: void 900171: _M_insert_range(iterator __pos, _InputIterator __first, 900171: _InputIterator __last, std::input_iterator_tag) 900171: { 900171: for (; __first != __last; ++__first) 900171: { 900171: __pos = insert(__pos, *__first); 900171: ++__pos; 900171: } 900171: } 900171: 900171: template 900171: 900171: void 900171: _M_insert_range(iterator __position, _ForwardIterator __first, 900171: _ForwardIterator __last, std::forward_iterator_tag); 900171: 900171: 900171: void 900171: _M_insert_aux(iterator __position, bool __x); 900171: 900171: 900171: size_type 900171: _M_check_len(size_type __n, const char* __s) const 900171: { 900171: if (max_size() - size() < __n) 900171: __throw_length_error((__s)); 900171: 900171: const size_type __len = size() + std::max(size(), __n); 900171: return (__len < size() || __len > max_size()) ? max_size() : __len; 900171: } 900171: 900171: 900171: void 900171: _M_erase_at_end(iterator __pos) 900171: { this->_M_impl._M_finish = __pos; } 900171: 900171: 900171: iterator 900171: _M_erase(iterator __pos); 900171: 900171: 900171: iterator 900171: _M_erase(iterator __first, iterator __last); 900171: 900171: protected: 900171: 900171: 900171: 900171: 900171: 900171: 900171: void data() = delete; 900171: 900171: 900171: 900171: }; 900171: 900171: 900171: 900171: 900171: 900171: inline void 900171: __fill_bvector(_Bit_type* __v, unsigned int __first, unsigned int __last, 900171: bool __x) noexcept 900171: { 900171: const _Bit_type __fmask = ~0ul << __first; 900171: const _Bit_type __lmask = ~0ul >> (_S_word_bit - __last); 900171: const _Bit_type __mask = __fmask & __lmask; 900171: 900171: if (__x) 900171: *__v |= __mask; 900171: else 900171: *__v &= ~__mask; 900171: } 900171: 900171: 900171: __attribute__((__nonnull__)) 900171: 900171: inline void 900171: __fill_bvector_n(_Bit_type* __p, size_t __n, bool __x) noexcept 900171: { 900171: # 1546 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_bvector.h" 3 900171: __builtin_memset(__p, __x ? ~0 : 0, __n * sizeof(_Bit_type)); 900171: } 900171: 900171: 900171: 900171: inline void 900171: __fill_a1(std::_Bit_iterator __first, 900171: std::_Bit_iterator __last, const bool& __x) 900171: { 900171: if (__first._M_p != __last._M_p) 900171: { 900171: _Bit_type* __first_p = __first._M_p; 900171: if (__first._M_offset != 0) 900171: __fill_bvector(__first_p++, __first._M_offset, _S_word_bit, __x); 900171: 900171: __fill_bvector_n(__first_p, __last._M_p - __first_p, __x); 900171: 900171: if (__last._M_offset != 0) 900171: __fill_bvector(__last._M_p, 0, __last._M_offset, __x); 900171: } 900171: else if (__first._M_offset != __last._M_offset) 900171: __fill_bvector(__first._M_p, __first._M_offset, __last._M_offset, __x); 900171: } 900171: 900171: 900171: 900171: 900171: template 900171: struct hash> 900171: : public __hash_base> 900171: { 900171: size_t 900171: operator()(const std::vector&) const noexcept; 900171: }; 900171: 900171: 900171: 900171: } 900171: # 66 "/usr/aarch64-linux-gnu/include/c++/12/vector" 2 3 900171: 900171: # 1 "/usr/aarch64-linux-gnu/include/c++/12/bits/range_access.h" 1 3 900171: # 33 "/usr/aarch64-linux-gnu/include/c++/12/bits/range_access.h" 3 900171: 900171: # 34 "/usr/aarch64-linux-gnu/include/c++/12/bits/range_access.h" 3 900171: 900171: 900171: 900171: 900171: 900171: 900171: namespace std __attribute__ ((__visibility__ ("default"))) 900171: { 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: template 900171: [[__nodiscard__]] 900171: inline auto 900171: begin(_Container& __cont) -> decltype(__cont.begin()) 900171: { return __cont.begin(); } 900171: 900171: 900171: 900171: 900171: 900171: 900171: template 900171: [[__nodiscard__]] 900171: inline auto 900171: begin(const _Container& __cont) -> decltype(__cont.begin()) 900171: { return __cont.begin(); } 900171: 900171: 900171: 900171: 900171: 900171: 900171: template 900171: [[__nodiscard__]] 900171: inline auto 900171: end(_Container& __cont) -> decltype(__cont.end()) 900171: { return __cont.end(); } 900171: 900171: 900171: 900171: 900171: 900171: 900171: template 900171: [[__nodiscard__]] 900171: inline auto 900171: end(const _Container& __cont) -> decltype(__cont.end()) 900171: { return __cont.end(); } 900171: 900171: 900171: 900171: 900171: 900171: template 900171: [[__nodiscard__]] 900171: inline _Tp* 900171: begin(_Tp (&__arr)[_Nm]) noexcept 900171: { return __arr; } 900171: 900171: 900171: 900171: 900171: 900171: 900171: template 900171: [[__nodiscard__]] 900171: inline _Tp* 900171: end(_Tp (&__arr)[_Nm]) noexcept 900171: { return __arr + _Nm; } 900171: # 367 "/usr/aarch64-linux-gnu/include/c++/12/bits/range_access.h" 3 900171: 900171: } 900171: # 68 "/usr/aarch64-linux-gnu/include/c++/12/vector" 2 3 900171: 900171: 900171: # 1 "/usr/aarch64-linux-gnu/include/c++/12/bits/vector.tcc" 1 3 900171: # 59 "/usr/aarch64-linux-gnu/include/c++/12/bits/vector.tcc" 3 900171: namespace std __attribute__ ((__visibility__ ("default"))) 900171: { 900171: 900171: 900171: 900171: template 900171: 900171: void 900171: vector<_Tp, _Alloc>:: 900171: reserve(size_type __n) 900171: { 900171: if (__n > this->max_size()) 900171: __throw_length_error(("vector::reserve")); 900171: if (this->capacity() < __n) 900171: { 900171: const size_type __old_size = size(); 900171: pointer __tmp; 900171: 900171: if (_S_use_relocate()) 900171: { 900171: __tmp = this->_M_allocate(__n); 900171: _S_relocate(this->_M_impl._M_start, this->_M_impl._M_finish, 900171: __tmp, _M_get_Tp_allocator()); 900171: } 900171: else 900171: 900171: { 900171: __tmp = _M_allocate_and_copy(__n, 900171: std::__make_move_if_noexcept_iterator(this->_M_impl._M_start), 900171: std::__make_move_if_noexcept_iterator(this->_M_impl._M_finish)); 900171: std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish, 900171: _M_get_Tp_allocator()); 900171: } 900171: ; 900171: _M_deallocate(this->_M_impl._M_start, 900171: this->_M_impl._M_end_of_storage 900171: - this->_M_impl._M_start); 900171: this->_M_impl._M_start = __tmp; 900171: this->_M_impl._M_finish = __tmp + __old_size; 900171: this->_M_impl._M_end_of_storage = this->_M_impl._M_start + __n; 900171: } 900171: } 900171: 900171: 900171: template 900171: template 900171: 900171: 900171: 900171: 900171: void 900171: 900171: vector<_Tp, _Alloc>:: 900171: emplace_back(_Args&&... __args) 900171: { 900171: if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage) 900171: { 900171: ; 900171: _Alloc_traits::construct(this->_M_impl, this->_M_impl._M_finish, 900171: std::forward<_Args>(__args)...); 900171: ++this->_M_impl._M_finish; 900171: ; 900171: } 900171: else 900171: _M_realloc_insert(end(), std::forward<_Args>(__args)...); 900171: 900171: 900171: 900171: } 900171: 900171: 900171: template 900171: 900171: typename vector<_Tp, _Alloc>::iterator 900171: vector<_Tp, _Alloc>:: 900171: 900171: insert(const_iterator __position, const value_type& __x) 900171: 900171: 900171: 900171: { 900171: const size_type __n = __position - begin(); 900171: if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage) 900171: if (__position == end()) 900171: { 900171: ; 900171: _Alloc_traits::construct(this->_M_impl, this->_M_impl._M_finish, 900171: __x); 900171: ++this->_M_impl._M_finish; 900171: ; 900171: } 900171: else 900171: { 900171: 900171: const auto __pos = begin() + (__position - cbegin()); 900171: 900171: 900171: _Temporary_value __x_copy(this, __x); 900171: _M_insert_aux(__pos, std::move(__x_copy._M_val())); 900171: 900171: 900171: 900171: } 900171: else 900171: 900171: _M_realloc_insert(begin() + (__position - cbegin()), __x); 900171: 900171: 900171: 900171: 900171: return iterator(this->_M_impl._M_start + __n); 900171: } 900171: 900171: template 900171: 900171: typename vector<_Tp, _Alloc>::iterator 900171: vector<_Tp, _Alloc>:: 900171: _M_erase(iterator __position) 900171: { 900171: if (__position + 1 != end()) 900171: std::move(__position + 1, end(), __position); 900171: --this->_M_impl._M_finish; 900171: _Alloc_traits::destroy(this->_M_impl, this->_M_impl._M_finish); 900171: ; 900171: return __position; 900171: } 900171: 900171: template 900171: 900171: typename vector<_Tp, _Alloc>::iterator 900171: vector<_Tp, _Alloc>:: 900171: _M_erase(iterator __first, iterator __last) 900171: { 900171: if (__first != __last) 900171: { 900171: if (__last != end()) 900171: std::move(__last, end(), __first); 900171: _M_erase_at_end(__first.base() + (end() - __last)); 900171: } 900171: return __first; 900171: } 900171: 900171: template 900171: 900171: vector<_Tp, _Alloc>& 900171: vector<_Tp, _Alloc>:: 900171: operator=(const vector<_Tp, _Alloc>& __x) 900171: { 900171: if (std::__addressof(__x) != this) 900171: { 900171: ; 900171: 900171: if (_Alloc_traits::_S_propagate_on_copy_assign()) 900171: { 900171: if (!_Alloc_traits::_S_always_equal() 900171: && _M_get_Tp_allocator() != __x._M_get_Tp_allocator()) 900171: { 900171: 900171: this->clear(); 900171: _M_deallocate(this->_M_impl._M_start, 900171: this->_M_impl._M_end_of_storage 900171: - this->_M_impl._M_start); 900171: this->_M_impl._M_start = nullptr; 900171: this->_M_impl._M_finish = nullptr; 900171: this->_M_impl._M_end_of_storage = nullptr; 900171: } 900171: std::__alloc_on_copy(_M_get_Tp_allocator(), 900171: __x._M_get_Tp_allocator()); 900171: } 900171: 900171: const size_type __xlen = __x.size(); 900171: if (__xlen > capacity()) 900171: { 900171: pointer __tmp = _M_allocate_and_copy(__xlen, __x.begin(), 900171: __x.end()); 900171: std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish, 900171: _M_get_Tp_allocator()); 900171: _M_deallocate(this->_M_impl._M_start, 900171: this->_M_impl._M_end_of_storage 900171: - this->_M_impl._M_start); 900171: this->_M_impl._M_start = __tmp; 900171: this->_M_impl._M_end_of_storage = this->_M_impl._M_start + __xlen; 900171: } 900171: else if (size() >= __xlen) 900171: { 900171: std::_Destroy(std::copy(__x.begin(), __x.end(), begin()), 900171: end(), _M_get_Tp_allocator()); 900171: } 900171: else 900171: { 900171: std::copy(__x._M_impl._M_start, __x._M_impl._M_start + size(), 900171: this->_M_impl._M_start); 900171: std::__uninitialized_copy_a(__x._M_impl._M_start + size(), 900171: __x._M_impl._M_finish, 900171: this->_M_impl._M_finish, 900171: _M_get_Tp_allocator()); 900171: } 900171: this->_M_impl._M_finish = this->_M_impl._M_start + __xlen; 900171: } 900171: return *this; 900171: } 900171: 900171: template 900171: 900171: void 900171: vector<_Tp, _Alloc>:: 900171: _M_fill_assign(size_t __n, const value_type& __val) 900171: { 900171: if (__n > capacity()) 900171: { 900171: vector __tmp(__n, __val, _M_get_Tp_allocator()); 900171: __tmp._M_impl._M_swap_data(this->_M_impl); 900171: } 900171: else if (__n > size()) 900171: { 900171: std::fill(begin(), end(), __val); 900171: const size_type __add = __n - size(); 900171: ; 900171: this->_M_impl._M_finish = 900171: std::__uninitialized_fill_n_a(this->_M_impl._M_finish, 900171: __add, __val, _M_get_Tp_allocator()); 900171: ; 900171: } 900171: else 900171: _M_erase_at_end(std::fill_n(this->_M_impl._M_start, __n, __val)); 900171: } 900171: 900171: template 900171: template 900171: 900171: void 900171: vector<_Tp, _Alloc>:: 900171: _M_assign_aux(_InputIterator __first, _InputIterator __last, 900171: std::input_iterator_tag) 900171: { 900171: pointer __cur(this->_M_impl._M_start); 900171: for (; __first != __last && __cur != this->_M_impl._M_finish; 900171: ++__cur, (void)++__first) 900171: *__cur = *__first; 900171: if (__first == __last) 900171: _M_erase_at_end(__cur); 900171: else 900171: _M_range_insert(end(), __first, __last, 900171: std::__iterator_category(__first)); 900171: } 900171: 900171: template 900171: template 900171: 900171: void 900171: vector<_Tp, _Alloc>:: 900171: _M_assign_aux(_ForwardIterator __first, _ForwardIterator __last, 900171: std::forward_iterator_tag) 900171: { 900171: const size_type __len = std::distance(__first, __last); 900171: 900171: if (__len > capacity()) 900171: { 900171: _S_check_init_len(__len, _M_get_Tp_allocator()); 900171: pointer __tmp(_M_allocate_and_copy(__len, __first, __last)); 900171: std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish, 900171: _M_get_Tp_allocator()); 900171: ; 900171: _M_deallocate(this->_M_impl._M_start, 900171: this->_M_impl._M_end_of_storage 900171: - this->_M_impl._M_start); 900171: this->_M_impl._M_start = __tmp; 900171: this->_M_impl._M_finish = this->_M_impl._M_start + __len; 900171: this->_M_impl._M_end_of_storage = this->_M_impl._M_finish; 900171: } 900171: else if (size() >= __len) 900171: _M_erase_at_end(std::copy(__first, __last, this->_M_impl._M_start)); 900171: else 900171: { 900171: _ForwardIterator __mid = __first; 900171: std::advance(__mid, size()); 900171: std::copy(__first, __mid, this->_M_impl._M_start); 900171: const size_type __attribute__((__unused__)) __n = __len - size(); 900171: ; 900171: this->_M_impl._M_finish = 900171: std::__uninitialized_copy_a(__mid, __last, 900171: this->_M_impl._M_finish, 900171: _M_get_Tp_allocator()); 900171: ; 900171: } 900171: } 900171: 900171: 900171: template 900171: 900171: auto 900171: vector<_Tp, _Alloc>:: 900171: _M_insert_rval(const_iterator __position, value_type&& __v) -> iterator 900171: { 900171: const auto __n = __position - cbegin(); 900171: if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage) 900171: if (__position == cend()) 900171: { 900171: ; 900171: _Alloc_traits::construct(this->_M_impl, this->_M_impl._M_finish, 900171: std::move(__v)); 900171: ++this->_M_impl._M_finish; 900171: ; 900171: } 900171: else 900171: _M_insert_aux(begin() + __n, std::move(__v)); 900171: else 900171: _M_realloc_insert(begin() + __n, std::move(__v)); 900171: 900171: return iterator(this->_M_impl._M_start + __n); 900171: } 900171: 900171: template 900171: template 900171: 900171: auto 900171: vector<_Tp, _Alloc>:: 900171: _M_emplace_aux(const_iterator __position, _Args&&... __args) 900171: -> iterator 900171: { 900171: const auto __n = __position - cbegin(); 900171: if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage) 900171: if (__position == cend()) 900171: { 900171: ; 900171: _Alloc_traits::construct(this->_M_impl, this->_M_impl._M_finish, 900171: std::forward<_Args>(__args)...); 900171: ++this->_M_impl._M_finish; 900171: ; 900171: } 900171: else 900171: { 900171: 900171: 900171: 900171: _Temporary_value __tmp(this, std::forward<_Args>(__args)...); 900171: _M_insert_aux(begin() + __n, std::move(__tmp._M_val())); 900171: } 900171: else 900171: _M_realloc_insert(begin() + __n, std::forward<_Args>(__args)...); 900171: 900171: return iterator(this->_M_impl._M_start + __n); 900171: } 900171: 900171: template 900171: template 900171: 900171: void 900171: vector<_Tp, _Alloc>:: 900171: _M_insert_aux(iterator __position, _Arg&& __arg) 900171: 900171: 900171: 900171: 900171: 900171: 900171: { 900171: ; 900171: _Alloc_traits::construct(this->_M_impl, this->_M_impl._M_finish, 900171: std::move(*(this->_M_impl._M_finish - 1))); 900171: ++this->_M_impl._M_finish; 900171: ; 900171: 900171: 900171: 900171: std::move_backward(__position.base(), this->_M_impl._M_finish - 2, this->_M_impl._M_finish - 1) 900171: 900171: ; 900171: 900171: 900171: 900171: *__position = std::forward<_Arg>(__arg); 900171: 900171: } 900171: 900171: 900171: template 900171: template 900171: 900171: void 900171: vector<_Tp, _Alloc>:: 900171: _M_realloc_insert(iterator __position, _Args&&... __args) 900171: 900171: 900171: 900171: 900171: 900171: 900171: { 900171: const size_type __len = 900171: _M_check_len(size_type(1), "vector::_M_realloc_insert"); 900171: pointer __old_start = this->_M_impl._M_start; 900171: pointer __old_finish = this->_M_impl._M_finish; 900171: const size_type __elems_before = __position - begin(); 900171: pointer __new_start(this->_M_allocate(__len)); 900171: pointer __new_finish(__new_start); 900171: try 900171: { 900171: 900171: 900171: 900171: 900171: 900171: _Alloc_traits::construct(this->_M_impl, 900171: __new_start + __elems_before, 900171: 900171: std::forward<_Args>(__args)...); 900171: 900171: 900171: 900171: __new_finish = pointer(); 900171: 900171: 900171: if (_S_use_relocate()) 900171: { 900171: __new_finish = _S_relocate(__old_start, __position.base(), 900171: __new_start, _M_get_Tp_allocator()); 900171: 900171: ++__new_finish; 900171: 900171: __new_finish = _S_relocate(__position.base(), __old_finish, 900171: __new_finish, _M_get_Tp_allocator()); 900171: } 900171: else 900171: 900171: { 900171: __new_finish 900171: = std::__uninitialized_move_if_noexcept_a 900171: (__old_start, __position.base(), 900171: __new_start, _M_get_Tp_allocator()); 900171: 900171: ++__new_finish; 900171: 900171: __new_finish 900171: = std::__uninitialized_move_if_noexcept_a 900171: (__position.base(), __old_finish, 900171: __new_finish, _M_get_Tp_allocator()); 900171: } 900171: } 900171: catch(...) 900171: { 900171: if (!__new_finish) 900171: _Alloc_traits::destroy(this->_M_impl, 900171: __new_start + __elems_before); 900171: else 900171: std::_Destroy(__new_start, __new_finish, _M_get_Tp_allocator()); 900171: _M_deallocate(__new_start, __len); 900171: throw; 900171: } 900171: 900171: if (!_S_use_relocate()) 900171: 900171: std::_Destroy(__old_start, __old_finish, _M_get_Tp_allocator()); 900171: ; 900171: _M_deallocate(__old_start, 900171: this->_M_impl._M_end_of_storage - __old_start); 900171: this->_M_impl._M_start = __new_start; 900171: this->_M_impl._M_finish = __new_finish; 900171: this->_M_impl._M_end_of_storage = __new_start + __len; 900171: } 900171: 900171: template 900171: 900171: void 900171: vector<_Tp, _Alloc>:: 900171: _M_fill_insert(iterator __position, size_type __n, const value_type& __x) 900171: { 900171: if (__n != 0) 900171: { 900171: if (size_type(this->_M_impl._M_end_of_storage 900171: - this->_M_impl._M_finish) >= __n) 900171: { 900171: 900171: 900171: 900171: _Temporary_value __tmp(this, __x); 900171: value_type& __x_copy = __tmp._M_val(); 900171: 900171: const size_type __elems_after = end() - __position; 900171: pointer __old_finish(this->_M_impl._M_finish); 900171: if (__elems_after > __n) 900171: { 900171: ; 900171: std::__uninitialized_move_a(this->_M_impl._M_finish - __n, 900171: this->_M_impl._M_finish, 900171: this->_M_impl._M_finish, 900171: _M_get_Tp_allocator()); 900171: this->_M_impl._M_finish += __n; 900171: ; 900171: std::move_backward(__position.base(), __old_finish - __n, __old_finish) 900171: ; 900171: std::fill(__position.base(), __position.base() + __n, 900171: __x_copy); 900171: } 900171: else 900171: { 900171: ; 900171: this->_M_impl._M_finish = 900171: std::__uninitialized_fill_n_a(this->_M_impl._M_finish, 900171: __n - __elems_after, 900171: __x_copy, 900171: _M_get_Tp_allocator()); 900171: ; 900171: std::__uninitialized_move_a(__position.base(), __old_finish, 900171: this->_M_impl._M_finish, 900171: _M_get_Tp_allocator()); 900171: this->_M_impl._M_finish += __elems_after; 900171: ; 900171: std::fill(__position.base(), __old_finish, __x_copy); 900171: } 900171: } 900171: else 900171: { 900171: const size_type __len = 900171: _M_check_len(__n, "vector::_M_fill_insert"); 900171: const size_type __elems_before = __position - begin(); 900171: pointer __new_start(this->_M_allocate(__len)); 900171: pointer __new_finish(__new_start); 900171: try 900171: { 900171: 900171: std::__uninitialized_fill_n_a(__new_start + __elems_before, 900171: __n, __x, 900171: _M_get_Tp_allocator()); 900171: __new_finish = pointer(); 900171: 900171: __new_finish 900171: = std::__uninitialized_move_if_noexcept_a 900171: (this->_M_impl._M_start, __position.base(), 900171: __new_start, _M_get_Tp_allocator()); 900171: 900171: __new_finish += __n; 900171: 900171: __new_finish 900171: = std::__uninitialized_move_if_noexcept_a 900171: (__position.base(), this->_M_impl._M_finish, 900171: __new_finish, _M_get_Tp_allocator()); 900171: } 900171: catch(...) 900171: { 900171: if (!__new_finish) 900171: std::_Destroy(__new_start + __elems_before, 900171: __new_start + __elems_before + __n, 900171: _M_get_Tp_allocator()); 900171: else 900171: std::_Destroy(__new_start, __new_finish, 900171: _M_get_Tp_allocator()); 900171: _M_deallocate(__new_start, __len); 900171: throw; 900171: } 900171: std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish, 900171: _M_get_Tp_allocator()); 900171: ; 900171: _M_deallocate(this->_M_impl._M_start, 900171: this->_M_impl._M_end_of_storage 900171: - this->_M_impl._M_start); 900171: this->_M_impl._M_start = __new_start; 900171: this->_M_impl._M_finish = __new_finish; 900171: this->_M_impl._M_end_of_storage = __new_start + __len; 900171: } 900171: } 900171: } 900171: 900171: 900171: template 900171: 900171: void 900171: vector<_Tp, _Alloc>:: 900171: _M_default_append(size_type __n) 900171: { 900171: if (__n != 0) 900171: { 900171: const size_type __size = size(); 900171: size_type __navail = size_type(this->_M_impl._M_end_of_storage 900171: - this->_M_impl._M_finish); 900171: 900171: if (__size > max_size() || __navail > max_size() - __size) 900171: __builtin_unreachable(); 900171: 900171: if (__navail >= __n) 900171: { 900171: ; 900171: this->_M_impl._M_finish = 900171: std::__uninitialized_default_n_a(this->_M_impl._M_finish, 900171: __n, _M_get_Tp_allocator()); 900171: ; 900171: } 900171: else 900171: { 900171: const size_type __len = 900171: _M_check_len(__n, "vector::_M_default_append"); 900171: pointer __new_start(this->_M_allocate(__len)); 900171: if (_S_use_relocate()) 900171: { 900171: try 900171: { 900171: std::__uninitialized_default_n_a(__new_start + __size, 900171: __n, _M_get_Tp_allocator()); 900171: } 900171: catch(...) 900171: { 900171: _M_deallocate(__new_start, __len); 900171: throw; 900171: } 900171: _S_relocate(this->_M_impl._M_start, this->_M_impl._M_finish, 900171: __new_start, _M_get_Tp_allocator()); 900171: } 900171: else 900171: { 900171: pointer __destroy_from = pointer(); 900171: try 900171: { 900171: std::__uninitialized_default_n_a(__new_start + __size, 900171: __n, _M_get_Tp_allocator()); 900171: __destroy_from = __new_start + __size; 900171: std::__uninitialized_move_if_noexcept_a( 900171: this->_M_impl._M_start, this->_M_impl._M_finish, 900171: __new_start, _M_get_Tp_allocator()); 900171: } 900171: catch(...) 900171: { 900171: if (__destroy_from) 900171: std::_Destroy(__destroy_from, __destroy_from + __n, 900171: _M_get_Tp_allocator()); 900171: _M_deallocate(__new_start, __len); 900171: throw; 900171: } 900171: std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish, 900171: _M_get_Tp_allocator()); 900171: } 900171: ; 900171: _M_deallocate(this->_M_impl._M_start, 900171: this->_M_impl._M_end_of_storage 900171: - this->_M_impl._M_start); 900171: this->_M_impl._M_start = __new_start; 900171: this->_M_impl._M_finish = __new_start + __size + __n; 900171: this->_M_impl._M_end_of_storage = __new_start + __len; 900171: } 900171: } 900171: } 900171: 900171: template 900171: 900171: bool 900171: vector<_Tp, _Alloc>:: 900171: _M_shrink_to_fit() 900171: { 900171: if (capacity() == size()) 900171: return false; 900171: ; 900171: return std::__shrink_to_fit_aux::_S_do_it(*this); 900171: } 900171: 900171: 900171: template 900171: template 900171: 900171: void 900171: vector<_Tp, _Alloc>:: 900171: _M_range_insert(iterator __pos, _InputIterator __first, 900171: _InputIterator __last, std::input_iterator_tag) 900171: { 900171: if (__pos == end()) 900171: { 900171: for (; __first != __last; ++__first) 900171: insert(end(), *__first); 900171: } 900171: else if (__first != __last) 900171: { 900171: vector __tmp(__first, __last, _M_get_Tp_allocator()); 900171: insert(__pos, 900171: std::make_move_iterator(__tmp.begin()), 900171: std::make_move_iterator(__tmp.end())); 900171: } 900171: } 900171: 900171: template 900171: template 900171: 900171: void 900171: vector<_Tp, _Alloc>:: 900171: _M_range_insert(iterator __position, _ForwardIterator __first, 900171: _ForwardIterator __last, std::forward_iterator_tag) 900171: { 900171: if (__first != __last) 900171: { 900171: const size_type __n = std::distance(__first, __last); 900171: if (size_type(this->_M_impl._M_end_of_storage 900171: - this->_M_impl._M_finish) >= __n) 900171: { 900171: const size_type __elems_after = end() - __position; 900171: pointer __old_finish(this->_M_impl._M_finish); 900171: if (__elems_after > __n) 900171: { 900171: ; 900171: std::__uninitialized_move_a(this->_M_impl._M_finish - __n, 900171: this->_M_impl._M_finish, 900171: this->_M_impl._M_finish, 900171: _M_get_Tp_allocator()); 900171: this->_M_impl._M_finish += __n; 900171: ; 900171: std::move_backward(__position.base(), __old_finish - __n, __old_finish) 900171: ; 900171: std::copy(__first, __last, __position); 900171: } 900171: else 900171: { 900171: _ForwardIterator __mid = __first; 900171: std::advance(__mid, __elems_after); 900171: ; 900171: std::__uninitialized_copy_a(__mid, __last, 900171: this->_M_impl._M_finish, 900171: _M_get_Tp_allocator()); 900171: this->_M_impl._M_finish += __n - __elems_after; 900171: ; 900171: std::__uninitialized_move_a(__position.base(), 900171: __old_finish, 900171: this->_M_impl._M_finish, 900171: _M_get_Tp_allocator()); 900171: this->_M_impl._M_finish += __elems_after; 900171: ; 900171: std::copy(__first, __mid, __position); 900171: } 900171: } 900171: else 900171: { 900171: const size_type __len = 900171: _M_check_len(__n, "vector::_M_range_insert"); 900171: pointer __new_start(this->_M_allocate(__len)); 900171: pointer __new_finish(__new_start); 900171: try 900171: { 900171: __new_finish 900171: = std::__uninitialized_move_if_noexcept_a 900171: (this->_M_impl._M_start, __position.base(), 900171: __new_start, _M_get_Tp_allocator()); 900171: __new_finish 900171: = std::__uninitialized_copy_a(__first, __last, 900171: __new_finish, 900171: _M_get_Tp_allocator()); 900171: __new_finish 900171: = std::__uninitialized_move_if_noexcept_a 900171: (__position.base(), this->_M_impl._M_finish, 900171: __new_finish, _M_get_Tp_allocator()); 900171: } 900171: catch(...) 900171: { 900171: std::_Destroy(__new_start, __new_finish, 900171: _M_get_Tp_allocator()); 900171: _M_deallocate(__new_start, __len); 900171: throw; 900171: } 900171: std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish, 900171: _M_get_Tp_allocator()); 900171: ; 900171: _M_deallocate(this->_M_impl._M_start, 900171: this->_M_impl._M_end_of_storage 900171: - this->_M_impl._M_start); 900171: this->_M_impl._M_start = __new_start; 900171: this->_M_impl._M_finish = __new_finish; 900171: this->_M_impl._M_end_of_storage = __new_start + __len; 900171: } 900171: } 900171: } 900171: 900171: 900171: 900171: template 900171: 900171: void 900171: vector:: 900171: _M_reallocate(size_type __n) 900171: { 900171: _Bit_pointer __q = this->_M_allocate(__n); 900171: iterator __start(std::__addressof(*__q), 0); 900171: iterator __finish(_M_copy_aligned(begin(), end(), __start)); 900171: this->_M_deallocate(); 900171: this->_M_impl._M_start = __start; 900171: this->_M_impl._M_finish = __finish; 900171: this->_M_impl._M_end_of_storage = __q + _S_nword(__n); 900171: } 900171: 900171: template 900171: 900171: void 900171: vector:: 900171: _M_fill_insert(iterator __position, size_type __n, bool __x) 900171: { 900171: if (__n == 0) 900171: return; 900171: if (capacity() - size() >= __n) 900171: { 900171: std::copy_backward(__position, end(), 900171: this->_M_impl._M_finish + difference_type(__n)); 900171: std::fill(__position, __position + difference_type(__n), __x); 900171: this->_M_impl._M_finish += difference_type(__n); 900171: } 900171: else 900171: { 900171: const size_type __len = 900171: _M_check_len(__n, "vector::_M_fill_insert"); 900171: _Bit_pointer __q = this->_M_allocate(__len); 900171: iterator __start(std::__addressof(*__q), 0); 900171: iterator __i = _M_copy_aligned(begin(), __position, __start); 900171: std::fill(__i, __i + difference_type(__n), __x); 900171: iterator __finish = std::copy(__position, end(), 900171: __i + difference_type(__n)); 900171: this->_M_deallocate(); 900171: this->_M_impl._M_end_of_storage = __q + _S_nword(__len); 900171: this->_M_impl._M_start = __start; 900171: this->_M_impl._M_finish = __finish; 900171: } 900171: } 900171: 900171: template 900171: template 900171: 900171: void 900171: vector:: 900171: _M_insert_range(iterator __position, _ForwardIterator __first, 900171: _ForwardIterator __last, std::forward_iterator_tag) 900171: { 900171: if (__first != __last) 900171: { 900171: size_type __n = std::distance(__first, __last); 900171: if (capacity() - size() >= __n) 900171: { 900171: std::copy_backward(__position, end(), 900171: this->_M_impl._M_finish 900171: + difference_type(__n)); 900171: std::copy(__first, __last, __position); 900171: this->_M_impl._M_finish += difference_type(__n); 900171: } 900171: else 900171: { 900171: const size_type __len = 900171: _M_check_len(__n, "vector::_M_insert_range"); 900171: _Bit_pointer __q = this->_M_allocate(__len); 900171: iterator __start(std::__addressof(*__q), 0); 900171: iterator __i = _M_copy_aligned(begin(), __position, __start); 900171: __i = std::copy(__first, __last, __i); 900171: iterator __finish = std::copy(__position, end(), __i); 900171: this->_M_deallocate(); 900171: this->_M_impl._M_end_of_storage = __q + _S_nword(__len); 900171: this->_M_impl._M_start = __start; 900171: this->_M_impl._M_finish = __finish; 900171: } 900171: } 900171: } 900171: 900171: template 900171: 900171: void 900171: vector:: 900171: _M_insert_aux(iterator __position, bool __x) 900171: { 900171: if (this->_M_impl._M_finish._M_p != this->_M_impl._M_end_addr()) 900171: { 900171: std::copy_backward(__position, this->_M_impl._M_finish, 900171: this->_M_impl._M_finish + 1); 900171: *__position = __x; 900171: ++this->_M_impl._M_finish; 900171: } 900171: else 900171: { 900171: const size_type __len = 900171: _M_check_len(size_type(1), "vector::_M_insert_aux"); 900171: _Bit_pointer __q = this->_M_allocate(__len); 900171: iterator __start(std::__addressof(*__q), 0); 900171: iterator __i = _M_copy_aligned(begin(), __position, __start); 900171: *__i++ = __x; 900171: iterator __finish = std::copy(__position, end(), __i); 900171: this->_M_deallocate(); 900171: this->_M_impl._M_end_of_storage = __q + _S_nword(__len); 900171: this->_M_impl._M_start = __start; 900171: this->_M_impl._M_finish = __finish; 900171: } 900171: } 900171: 900171: template 900171: 900171: typename vector::iterator 900171: vector:: 900171: _M_erase(iterator __position) 900171: { 900171: if (__position + 1 != end()) 900171: std::copy(__position + 1, end(), __position); 900171: --this->_M_impl._M_finish; 900171: return __position; 900171: } 900171: 900171: template 900171: 900171: typename vector::iterator 900171: vector:: 900171: _M_erase(iterator __first, iterator __last) 900171: { 900171: if (__first != __last) 900171: _M_erase_at_end(std::copy(__last, end(), __first)); 900171: return __first; 900171: } 900171: 900171: 900171: template 900171: 900171: bool 900171: vector:: 900171: _M_shrink_to_fit() 900171: { 900171: if (capacity() - size() < int(_S_word_bit)) 900171: return false; 900171: try 900171: { 900171: if (size_type __n = size()) 900171: _M_reallocate(__n); 900171: else 900171: { 900171: this->_M_deallocate(); 900171: this->_M_impl._M_reset(); 900171: } 900171: return true; 900171: } 900171: catch(...) 900171: { return false; } 900171: } 900171: 900171: 900171: 900171: 900171: } 900171: 900171: 900171: 900171: namespace std __attribute__ ((__visibility__ ("default"))) 900171: { 900171: 900171: 900171: template 900171: size_t 900171: hash>:: 900171: operator()(const std::vector& __b) const noexcept 900171: { 900171: size_t __hash = 0; 900171: const size_t __words = __b.size() / _S_word_bit; 900171: if (__words) 900171: { 900171: const size_t __clength = __words * sizeof(_Bit_type); 900171: __hash = std::_Hash_impl::hash(__b._M_impl._M_start._M_p, __clength); 900171: } 900171: 900171: const size_t __extrabits = __b.size() % _S_word_bit; 900171: if (__extrabits) 900171: { 900171: _Bit_type __hiword = *__b._M_impl._M_finish._M_p; 900171: __hiword &= ~((~static_cast<_Bit_type>(0)) << __extrabits); 900171: 900171: const size_t __clength 900171: = (__extrabits + 8 - 1) / 8; 900171: if (__words) 900171: __hash = std::_Hash_impl::hash(&__hiword, __clength, __hash); 900171: else 900171: __hash = std::_Hash_impl::hash(&__hiword, __clength); 900171: } 900171: 900171: return __hash; 900171: } 900171: 900171: 900171: } 900171: # 71 "/usr/aarch64-linux-gnu/include/c++/12/vector" 2 3 900171: # 30 "third_party/butteraugli/butteraugli/butteraugli.h" 2 900171: # 45 "third_party/butteraugli/butteraugli/butteraugli.h" 900171: 900171: # 45 "third_party/butteraugli/butteraugli/butteraugli.h" 900171: namespace butteraugli { 900171: 900171: template 900171: class Image; 900171: 900171: using Image8 = Image; 900171: using ImageF = Image; 900171: using ImageD = Image; 900171: # 86 "third_party/butteraugli/butteraugli/butteraugli.h" 900171: bool ButteraugliInterface(const std::vector &rgb0, 900171: const std::vector &rgb1, 900171: ImageF &diffmap, 900171: double &diffvalue); 900171: 900171: const double kButteraugliQuantLow = 0.26; 900171: const double kButteraugliQuantHigh = 1.454; 900171: # 104 "third_party/butteraugli/butteraugli/butteraugli.h" 900171: double ButteraugliFuzzyClass(double score); 900171: 900171: 900171: 900171: double ButteraugliFuzzyInverse(double seek); 900171: 900171: 900171: 900171: 900171: 900171: bool ButteraugliAdaptiveQuantization(size_t xsize, size_t ysize, 900171: const std::vector > &rgb, std::vector &quant); 900171: # 136 "third_party/butteraugli/butteraugli/butteraugli.h" 900171: template 900171: using ConstRestrict = T const __restrict__; 900171: 900171: 900171: class CacheAligned { 900171: public: 900171: static constexpr size_t kPointerSize = sizeof(void *); 900171: static constexpr size_t kCacheLineSize = 64; 900171: 900171: 900171: static void *Allocate(const size_t bytes) __attribute__((assume_aligned(64))); 900171: static void Free(void *aligned_pointer); 900171: }; 900171: 900171: template 900171: using CacheAlignedUniquePtrT = std::unique_ptr; 900171: 900171: using CacheAlignedUniquePtr = CacheAlignedUniquePtrT; 900171: 900171: template 900171: static inline CacheAlignedUniquePtrT Allocate(const size_t entries) { 900171: return CacheAlignedUniquePtrT( 900171: static_cast>( 900171: CacheAligned::Allocate(entries * sizeof(T))), 900171: CacheAligned::Free); 900171: } 900171: 900171: 900171: 900171: template 900171: static inline size_t Align(const size_t amount) { 900171: static_assert(multiple != 0 && ((multiple & (multiple - 1)) == 0), 900171: "Align<> argument must be a power of two"); 900171: return (amount + multiple - 1) & ~(multiple - 1); 900171: } 900171: # 194 "third_party/butteraugli/butteraugli/butteraugli.h" 900171: template 900171: class Image { 900171: 900171: static size_t BytesPerRow(const size_t xsize) { 900171: 900171: const size_t row_size = xsize * sizeof(T) + 32; 900171: const size_t align = CacheAligned::kCacheLineSize; 900171: size_t bytes_per_row = (row_size + align - 1) & ~(align - 1); 900171: 900171: 900171: 900171: 900171: if (bytes_per_row % 2048 == 0) { 900171: bytes_per_row += align; 900171: } 900171: return bytes_per_row; 900171: } 900171: 900171: public: 900171: using T = ComponentType; 900171: 900171: Image() : xsize_(0), ysize_(0), bytes_per_row_(0), bytes_(static_cast(nullptr), Ignore) {} 900171: 900171: Image(const size_t xsize, const size_t ysize) 900171: : xsize_(xsize), 900171: ysize_(ysize), 900171: bytes_per_row_(BytesPerRow(xsize)), 900171: bytes_(Allocate(bytes_per_row_ * ysize)) {} 900171: 900171: Image(const size_t xsize, const size_t ysize, ConstRestrict bytes, 900171: const size_t bytes_per_row) 900171: : xsize_(xsize), 900171: ysize_(ysize), 900171: bytes_per_row_(bytes_per_row), 900171: bytes_(bytes, Ignore) {} 900171: 900171: 900171: Image(Image &&other) 900171: : xsize_(other.xsize_), 900171: ysize_(other.ysize_), 900171: bytes_per_row_(other.bytes_per_row_), 900171: bytes_(std::move(other.bytes_)) {} 900171: 900171: 900171: Image &operator=(Image &&other) { 900171: xsize_ = other.xsize_; 900171: ysize_ = other.ysize_; 900171: bytes_per_row_ = other.bytes_per_row_; 900171: bytes_ = std::move(other.bytes_); 900171: return *this; 900171: } 900171: 900171: void Swap(Image &other) { 900171: std::swap(xsize_, other.xsize_); 900171: std::swap(ysize_, other.ysize_); 900171: std::swap(bytes_per_row_, other.bytes_per_row_); 900171: std::swap(bytes_, other.bytes_); 900171: } 900171: 900171: 900171: size_t xsize() const { return xsize_; } 900171: size_t ysize() const { return ysize_; } 900171: 900171: ConstRestrict Row(const size_t y) __attribute__((assume_aligned(64))) { 900171: 900171: if (y >= ysize_) { 900171: printf("Row %zu out of bounds (ysize=%zu)\n", y, ysize_); 900171: abort(); 900171: } 900171: 900171: return reinterpret_cast(bytes_.get() + y * bytes_per_row_); 900171: } 900171: 900171: ConstRestrict Row(const size_t y) const 900171: __attribute__((assume_aligned(64))) { 900171: 900171: if (y >= ysize_) { 900171: printf("Const row %zu out of bounds (ysize=%zu)\n", y, ysize_); 900171: abort(); 900171: } 900171: 900171: return reinterpret_cast(bytes_.get() + y * bytes_per_row_); 900171: } 900171: 900171: 900171: 900171: ConstRestrict bytes() { return bytes_.get(); } 900171: ConstRestrict bytes() const { return bytes_.get(); } 900171: size_t bytes_per_row() const { return bytes_per_row_; } 900171: 900171: 900171: 900171: intptr_t PixelsPerRow() const { 900171: static_assert(CacheAligned::kCacheLineSize % sizeof(T) == 0, 900171: "Padding must be divisible by the pixel size."); 900171: return static_cast(bytes_per_row_ / sizeof(T)); 900171: } 900171: 900171: private: 900171: 900171: static void Ignore(void *ptr) {} 900171: 900171: 900171: size_t xsize_; 900171: size_t ysize_; 900171: size_t bytes_per_row_; 900171: CacheAlignedUniquePtr bytes_; 900171: }; 900171: 900171: 900171: template 900171: static inline std::vector> CreatePlanes(const size_t xsize, 900171: const size_t ysize, 900171: const size_t num_planes) { 900171: std::vector> planes; 900171: planes.reserve(num_planes); 900171: for (size_t i = 0; i < num_planes; ++i) { 900171: planes.emplace_back(xsize, ysize); 900171: } 900171: return planes; 900171: } 900171: 900171: 900171: template 900171: static inline Image CopyPixels(const Image &other) { 900171: Image copy(other.xsize(), other.ysize()); 900171: const void *__restrict__ from = other.bytes(); 900171: void *__restrict__ to = copy.bytes(); 900171: memcpy(to, from, other.ysize() * other.bytes_per_row()); 900171: return copy; 900171: } 900171: 900171: 900171: template 900171: static inline std::vector> CopyPlanes( 900171: const std::vector> &planes) { 900171: std::vector> copy; 900171: copy.reserve(planes.size()); 900171: for (const Image &plane : planes) { 900171: copy.push_back(CopyPixels(plane)); 900171: } 900171: return copy; 900171: } 900171: 900171: 900171: template 900171: static inline void CopyToPacked(const Image &from, std::vector *to) { 900171: const size_t xsize = from.xsize(); 900171: const size_t ysize = from.ysize(); 900171: 900171: 900171: 900171: 900171: 900171: 900171: for (size_t y = 0; y < ysize; ++y) { 900171: ConstRestrict row_from = from.Row(y); 900171: ConstRestrict row_to = to->data() + y * xsize; 900171: memcpy(row_to, row_from, xsize * sizeof(T)); 900171: } 900171: } 900171: 900171: 900171: template 900171: static inline void CopyFromPacked(const std::vector &from, Image *to) { 900171: const size_t xsize = to->xsize(); 900171: const size_t ysize = to->ysize(); 900171: 900171: # 361 "third_party/butteraugli/butteraugli/butteraugli.h" 3 900171: (static_cast ( 900171: # 361 "third_party/butteraugli/butteraugli/butteraugli.h" 900171: from.size() == xsize * ysize 900171: # 361 "third_party/butteraugli/butteraugli/butteraugli.h" 3 900171: ) ? void (0) : __assert_fail ( 900171: # 361 "third_party/butteraugli/butteraugli/butteraugli.h" 900171: "from.size() == xsize * ysize" 900171: # 361 "third_party/butteraugli/butteraugli/butteraugli.h" 3 900171: , "third_party/butteraugli/butteraugli/butteraugli.h", 361, __extension__ __PRETTY_FUNCTION__)) 900171: # 361 "third_party/butteraugli/butteraugli/butteraugli.h" 900171: ; 900171: for (size_t y = 0; y < ysize; ++y) { 900171: ConstRestrict row_from = from.data() + y * xsize; 900171: ConstRestrict row_to = to->Row(y); 900171: memcpy(row_to, row_from, xsize * sizeof(T)); 900171: } 900171: } 900171: 900171: template 900171: static inline std::vector> PlanesFromPacked( 900171: const size_t xsize, const size_t ysize, 900171: const std::vector> &packed) { 900171: std::vector> planes; 900171: planes.reserve(packed.size()); 900171: for (const std::vector &p : packed) { 900171: planes.push_back(Image(xsize, ysize)); 900171: CopyFromPacked(p, &planes.back()); 900171: } 900171: return planes; 900171: } 900171: 900171: template 900171: static inline std::vector> PackedFromPlanes( 900171: const std::vector> &planes) { 900171: 900171: # 385 "third_party/butteraugli/butteraugli/butteraugli.h" 3 900171: (static_cast ( 900171: # 385 "third_party/butteraugli/butteraugli/butteraugli.h" 900171: !planes.empty() 900171: # 385 "third_party/butteraugli/butteraugli/butteraugli.h" 3 900171: ) ? void (0) : __assert_fail ( 900171: # 385 "third_party/butteraugli/butteraugli/butteraugli.h" 900171: "!planes.empty()" 900171: # 385 "third_party/butteraugli/butteraugli/butteraugli.h" 3 900171: , "third_party/butteraugli/butteraugli/butteraugli.h", 385, __extension__ __PRETTY_FUNCTION__)) 900171: # 385 "third_party/butteraugli/butteraugli/butteraugli.h" 900171: ; 900171: const size_t num_pixels = planes[0].xsize() * planes[0].ysize(); 900171: std::vector> packed; 900171: packed.reserve(planes.size()); 900171: for (const Image &image : planes) { 900171: packed.push_back(std::vector(num_pixels)); 900171: CopyToPacked(image, &packed.back()); 900171: } 900171: return packed; 900171: } 900171: 900171: class ButteraugliComparator { 900171: public: 900171: ButteraugliComparator(size_t xsize, size_t ysize, int step); 900171: 900171: 900171: void Diffmap(const std::vector &rgb0, 900171: const std::vector &rgb1, 900171: ImageF &result); 900171: 900171: 900171: 900171: void DiffmapOpsinDynamicsImage(const std::vector &rgb0, 900171: const std::vector &rgb1, 900171: ImageF &result); 900171: 900171: private: 900171: void BlockDiffMap(const std::vector > &rgb0, 900171: const std::vector > &rgb1, 900171: std::vector* block_diff_dc, 900171: std::vector* block_diff_ac); 900171: 900171: 900171: void EdgeDetectorMap(const std::vector > &rgb0, 900171: const std::vector > &rgb1, 900171: std::vector* edge_detector_map); 900171: 900171: void EdgeDetectorLowFreq(const std::vector > &rgb0, 900171: const std::vector > &rgb1, 900171: std::vector* block_diff_ac); 900171: 900171: void CombineChannels(const std::vector >& scale_xyb, 900171: const std::vector >& scale_xyb_dc, 900171: const std::vector& block_diff_dc, 900171: const std::vector& block_diff_ac, 900171: const std::vector& edge_detector_map, 900171: std::vector* result); 900171: 900171: const size_t xsize_; 900171: const size_t ysize_; 900171: const size_t num_pixels_; 900171: const int step_; 900171: const size_t res_xsize_; 900171: const size_t res_ysize_; 900171: }; 900171: 900171: void ButteraugliDiffmap(const std::vector &rgb0, 900171: const std::vector &rgb1, 900171: ImageF &diffmap); 900171: 900171: double ButteraugliScoreFromDiffmap(const ImageF& distmap); 900171: 900171: 900171: 900171: void Mask(const std::vector > &rgb0, 900171: const std::vector > &rgb1, 900171: size_t xsize, size_t ysize, 900171: std::vector > *mask, 900171: std::vector > *mask_dc); 900171: 900171: 900171: void ButteraugliBlockDiff(double rgb0[192], 900171: double rgb1[192], 900171: double diff_xyb_dc[3], 900171: double diff_xyb_ac[3], 900171: double diff_xyb_edge_dc[3]); 900171: 900171: void OpsinAbsorbance(const double in[3], double out[3]); 900171: 900171: void OpsinDynamicsImage(size_t xsize, size_t ysize, 900171: std::vector > &rgb); 900171: 900171: void MaskHighIntensityChange( 900171: size_t xsize, size_t ysize, 900171: const std::vector > &c0, 900171: const std::vector > &c1, 900171: std::vector > &rgb0, 900171: std::vector > &rgb1); 900171: 900171: void Blur(size_t xsize, size_t ysize, float* channel, double sigma, 900171: double border_ratio = 0.0); 900171: 900171: void RgbToXyb(double r, double g, double b, 900171: double *valx, double *valy, double *valz); 900171: 900171: double SimpleGamma(double v); 900171: 900171: double GammaMinArg(); 900171: double GammaMaxArg(); 900171: 900171: 900171: 900171: 900171: template 900171: static inline void ClenshawRecursion(const double x, const double *coefficients, 900171: double *b1, double *b2) { 900171: const double x_b1 = x * (*b1); 900171: const double t = (x_b1 + x_b1) - (*b2) + coefficients[INDEX]; 900171: *b2 = *b1; 900171: *b1 = t; 900171: 900171: ClenshawRecursion(x, coefficients, b1, b2); 900171: } 900171: 900171: 900171: template <> 900171: inline void ClenshawRecursion<0>(const double x, const double *coefficients, 900171: double *b1, double *b2) { 900171: const double x_b1 = x * (*b1); 900171: 900171: *b1 = x_b1 - (*b2) + coefficients[0]; 900171: } 900171: 900171: 900171: 900171: struct RationalPolynomial { 900171: template 900171: static double EvaluatePolynomial(const double x, 900171: const double (&coefficients)[N]) { 900171: double b1 = 0.0; 900171: double b2 = 0.0; 900171: ClenshawRecursion(x, coefficients, &b1, &b2); 900171: return b1; 900171: } 900171: 900171: 900171: inline double operator()(const float x) const { 900171: 900171: const double x01 = (x - min_value) / (max_value - min_value); 900171: 900171: const double xc = 2.0 * x01 - 1.0; 900171: 900171: const double yp = EvaluatePolynomial(xc, p); 900171: const double yq = EvaluatePolynomial(xc, q); 900171: if (yq == 0.0) return 0.0; 900171: return static_cast(yp / yq); 900171: } 900171: 900171: 900171: double min_value; 900171: double max_value; 900171: 900171: 900171: 900171: double p[5 + 1]; 900171: double q[5 + 1]; 900171: }; 900171: 900171: static inline float GammaPolynomial(float value) { 900171: 900171: static const RationalPolynomial r = { 900171: 0.770000000000000, 274.579999999999984, 900171: { 900171: 881.979476556478289, 1496.058452015812463, 908.662212739659481, 900171: 373.566100223287378, 85.840860336314364, 6.683258861509244, 900171: }, 900171: { 900171: 12.262350348616792, 20.557285797683576, 12.161463238367844, 900171: 4.711532733641639, 0.899112889751053, 0.035662329617191, 900171: }}; 900171: return r(value); 900171: } 900171: 900171: } 900171: # 33 "third_party/butteraugli/butteraugli/butteraugli.cc" 2 900171: 900171: # 1 "/usr/aarch64-linux-gnu/include/assert.h" 1 3 900171: # 35 "third_party/butteraugli/butteraugli/butteraugli.cc" 2 900171: # 1 "/usr/aarch64-linux-gnu/include/c++/12/math.h" 1 3 900171: # 36 "/usr/aarch64-linux-gnu/include/c++/12/math.h" 3 900171: # 1 "/usr/aarch64-linux-gnu/include/c++/12/cmath" 1 3 900171: # 39 "/usr/aarch64-linux-gnu/include/c++/12/cmath" 3 900171: 900171: # 40 "/usr/aarch64-linux-gnu/include/c++/12/cmath" 3 900171: # 37 "/usr/aarch64-linux-gnu/include/c++/12/math.h" 2 3 900171: 900171: 900171: # 38 "/usr/aarch64-linux-gnu/include/c++/12/math.h" 3 900171: using std::abs; 900171: using std::acos; 900171: using std::asin; 900171: using std::atan; 900171: using std::atan2; 900171: using std::cos; 900171: using std::sin; 900171: using std::tan; 900171: using std::cosh; 900171: using std::sinh; 900171: using std::tanh; 900171: using std::exp; 900171: using std::frexp; 900171: using std::ldexp; 900171: using std::log; 900171: using std::log10; 900171: using std::modf; 900171: using std::pow; 900171: using std::sqrt; 900171: using std::ceil; 900171: using std::fabs; 900171: using std::floor; 900171: using std::fmod; 900171: 900171: 900171: using std::fpclassify; 900171: using std::isfinite; 900171: using std::isinf; 900171: using std::isnan; 900171: using std::isnormal; 900171: using std::signbit; 900171: using std::isgreater; 900171: using std::isgreaterequal; 900171: using std::isless; 900171: using std::islessequal; 900171: using std::islessgreater; 900171: using std::isunordered; 900171: 900171: 900171: 900171: using std::acosh; 900171: using std::asinh; 900171: using std::atanh; 900171: using std::cbrt; 900171: using std::copysign; 900171: using std::erf; 900171: using std::erfc; 900171: using std::exp2; 900171: using std::expm1; 900171: using std::fdim; 900171: using std::fma; 900171: using std::fmax; 900171: using std::fmin; 900171: using std::hypot; 900171: using std::ilogb; 900171: using std::lgamma; 900171: using std::llrint; 900171: using std::llround; 900171: using std::log1p; 900171: using std::log2; 900171: using std::logb; 900171: using std::lrint; 900171: using std::lround; 900171: using std::nearbyint; 900171: using std::nextafter; 900171: using std::nexttoward; 900171: using std::remainder; 900171: using std::remquo; 900171: using std::rint; 900171: using std::round; 900171: using std::scalbln; 900171: using std::scalbn; 900171: using std::tgamma; 900171: using std::trunc; 900171: # 36 "third_party/butteraugli/butteraugli/butteraugli.cc" 2 900171: 900171: 900171: 900171: 900171: # 1 "/usr/aarch64-linux-gnu/include/c++/12/algorithm" 1 3 900171: # 58 "/usr/aarch64-linux-gnu/include/c++/12/algorithm" 3 900171: 900171: # 59 "/usr/aarch64-linux-gnu/include/c++/12/algorithm" 3 900171: 900171: 900171: # 1 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algo.h" 1 3 900171: # 59 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algo.h" 3 900171: # 1 "/usr/aarch64-linux-gnu/include/c++/12/bits/algorithmfwd.h" 1 3 900171: # 33 "/usr/aarch64-linux-gnu/include/c++/12/bits/algorithmfwd.h" 3 900171: 900171: # 34 "/usr/aarch64-linux-gnu/include/c++/12/bits/algorithmfwd.h" 3 900171: # 42 "/usr/aarch64-linux-gnu/include/c++/12/bits/algorithmfwd.h" 3 900171: namespace std __attribute__ ((__visibility__ ("default"))) 900171: { 900171: 900171: # 199 "/usr/aarch64-linux-gnu/include/c++/12/bits/algorithmfwd.h" 3 900171: template 900171: 900171: bool 900171: all_of(_IIter, _IIter, _Predicate); 900171: 900171: template 900171: 900171: bool 900171: any_of(_IIter, _IIter, _Predicate); 900171: 900171: 900171: template 900171: 900171: bool 900171: binary_search(_FIter, _FIter, const _Tp&); 900171: 900171: template 900171: 900171: bool 900171: binary_search(_FIter, _FIter, const _Tp&, _Compare); 900171: # 232 "/usr/aarch64-linux-gnu/include/c++/12/bits/algorithmfwd.h" 3 900171: template 900171: 900171: _OIter 900171: copy(_IIter, _IIter, _OIter); 900171: 900171: template 900171: 900171: _BIter2 900171: copy_backward(_BIter1, _BIter1, _BIter2); 900171: 900171: 900171: template 900171: 900171: _OIter 900171: copy_if(_IIter, _IIter, _OIter, _Predicate); 900171: 900171: template 900171: 900171: _OIter 900171: copy_n(_IIter, _Size, _OIter); 900171: 900171: 900171: 900171: 900171: 900171: template 900171: 900171: pair<_FIter, _FIter> 900171: equal_range(_FIter, _FIter, const _Tp&); 900171: 900171: template 900171: 900171: pair<_FIter, _FIter> 900171: equal_range(_FIter, _FIter, const _Tp&, _Compare); 900171: 900171: template 900171: 900171: void 900171: fill(_FIter, _FIter, const _Tp&); 900171: 900171: template 900171: 900171: _OIter 900171: fill_n(_OIter, _Size, const _Tp&); 900171: 900171: 900171: 900171: template 900171: 900171: _FIter1 900171: find_end(_FIter1, _FIter1, _FIter2, _FIter2); 900171: 900171: template 900171: 900171: _FIter1 900171: find_end(_FIter1, _FIter1, _FIter2, _FIter2, _BinaryPredicate); 900171: 900171: 900171: 900171: 900171: 900171: template 900171: 900171: _IIter 900171: find_if_not(_IIter, _IIter, _Predicate); 900171: 900171: 900171: 900171: 900171: 900171: 900171: template 900171: 900171: bool 900171: includes(_IIter1, _IIter1, _IIter2, _IIter2); 900171: 900171: template 900171: 900171: bool 900171: includes(_IIter1, _IIter1, _IIter2, _IIter2, _Compare); 900171: 900171: template 900171: void 900171: inplace_merge(_BIter, _BIter, _BIter); 900171: 900171: template 900171: void 900171: inplace_merge(_BIter, _BIter, _BIter, _Compare); 900171: 900171: 900171: template 900171: 900171: bool 900171: is_heap(_RAIter, _RAIter); 900171: 900171: template 900171: 900171: bool 900171: is_heap(_RAIter, _RAIter, _Compare); 900171: 900171: template 900171: 900171: _RAIter 900171: is_heap_until(_RAIter, _RAIter); 900171: 900171: template 900171: 900171: _RAIter 900171: is_heap_until(_RAIter, _RAIter, _Compare); 900171: 900171: template 900171: 900171: bool 900171: is_partitioned(_IIter, _IIter, _Predicate); 900171: 900171: template 900171: 900171: bool 900171: is_permutation(_FIter1, _FIter1, _FIter2); 900171: 900171: template 900171: 900171: bool 900171: is_permutation(_FIter1, _FIter1, _FIter2, _BinaryPredicate); 900171: 900171: template 900171: 900171: bool 900171: is_sorted(_FIter, _FIter); 900171: 900171: template 900171: 900171: bool 900171: is_sorted(_FIter, _FIter, _Compare); 900171: 900171: template 900171: 900171: _FIter 900171: is_sorted_until(_FIter, _FIter); 900171: 900171: template 900171: 900171: _FIter 900171: is_sorted_until(_FIter, _FIter, _Compare); 900171: 900171: 900171: template 900171: 900171: void 900171: iter_swap(_FIter1, _FIter2); 900171: 900171: template 900171: 900171: _FIter 900171: lower_bound(_FIter, _FIter, const _Tp&); 900171: 900171: template 900171: 900171: _FIter 900171: lower_bound(_FIter, _FIter, const _Tp&, _Compare); 900171: 900171: template 900171: 900171: void 900171: make_heap(_RAIter, _RAIter); 900171: 900171: template 900171: 900171: void 900171: make_heap(_RAIter, _RAIter, _Compare); 900171: 900171: template 900171: 900171: const _Tp& 900171: max(const _Tp&, const _Tp&); 900171: 900171: template 900171: 900171: const _Tp& 900171: max(const _Tp&, const _Tp&, _Compare); 900171: 900171: 900171: 900171: 900171: template 900171: 900171: const _Tp& 900171: min(const _Tp&, const _Tp&); 900171: 900171: template 900171: 900171: const _Tp& 900171: min(const _Tp&, const _Tp&, _Compare); 900171: 900171: 900171: 900171: 900171: template 900171: 900171: pair 900171: minmax(const _Tp&, const _Tp&); 900171: 900171: template 900171: 900171: pair 900171: minmax(const _Tp&, const _Tp&, _Compare); 900171: 900171: template 900171: 900171: pair<_FIter, _FIter> 900171: minmax_element(_FIter, _FIter); 900171: 900171: template 900171: 900171: pair<_FIter, _FIter> 900171: minmax_element(_FIter, _FIter, _Compare); 900171: 900171: template 900171: 900171: _Tp 900171: min(initializer_list<_Tp>); 900171: 900171: template 900171: 900171: _Tp 900171: min(initializer_list<_Tp>, _Compare); 900171: 900171: template 900171: 900171: _Tp 900171: max(initializer_list<_Tp>); 900171: 900171: template 900171: 900171: _Tp 900171: max(initializer_list<_Tp>, _Compare); 900171: 900171: template 900171: 900171: pair<_Tp, _Tp> 900171: minmax(initializer_list<_Tp>); 900171: 900171: template 900171: 900171: pair<_Tp, _Tp> 900171: minmax(initializer_list<_Tp>, _Compare); 900171: 900171: 900171: 900171: 900171: template 900171: 900171: bool 900171: next_permutation(_BIter, _BIter); 900171: 900171: template 900171: 900171: bool 900171: next_permutation(_BIter, _BIter, _Compare); 900171: 900171: 900171: template 900171: 900171: bool 900171: none_of(_IIter, _IIter, _Predicate); 900171: 900171: 900171: 900171: 900171: 900171: template 900171: 900171: _RAIter 900171: partial_sort_copy(_IIter, _IIter, _RAIter, _RAIter); 900171: 900171: template 900171: 900171: _RAIter 900171: partial_sort_copy(_IIter, _IIter, _RAIter, _RAIter, _Compare); 900171: 900171: 900171: 900171: 900171: template 900171: 900171: pair<_OIter1, _OIter2> 900171: partition_copy(_IIter, _IIter, _OIter1, _OIter2, _Predicate); 900171: 900171: template 900171: 900171: _FIter 900171: partition_point(_FIter, _FIter, _Predicate); 900171: 900171: 900171: template 900171: 900171: void 900171: pop_heap(_RAIter, _RAIter); 900171: 900171: template 900171: 900171: void 900171: pop_heap(_RAIter, _RAIter, _Compare); 900171: 900171: template 900171: 900171: bool 900171: prev_permutation(_BIter, _BIter); 900171: 900171: template 900171: 900171: bool 900171: prev_permutation(_BIter, _BIter, _Compare); 900171: 900171: template 900171: 900171: void 900171: push_heap(_RAIter, _RAIter); 900171: 900171: template 900171: 900171: void 900171: push_heap(_RAIter, _RAIter, _Compare); 900171: 900171: 900171: 900171: template 900171: 900171: _FIter 900171: remove(_FIter, _FIter, const _Tp&); 900171: 900171: template 900171: 900171: _FIter 900171: remove_if(_FIter, _FIter, _Predicate); 900171: 900171: template 900171: 900171: _OIter 900171: remove_copy(_IIter, _IIter, _OIter, const _Tp&); 900171: 900171: template 900171: 900171: _OIter 900171: remove_copy_if(_IIter, _IIter, _OIter, _Predicate); 900171: 900171: 900171: 900171: template 900171: 900171: _OIter 900171: replace_copy(_IIter, _IIter, _OIter, const _Tp&, const _Tp&); 900171: 900171: template 900171: 900171: _OIter 900171: replace_copy_if(_Iter, _Iter, _OIter, _Predicate, const _Tp&); 900171: 900171: 900171: 900171: template 900171: 900171: void 900171: reverse(_BIter, _BIter); 900171: 900171: template 900171: 900171: _OIter 900171: reverse_copy(_BIter, _BIter, _OIter); 900171: 900171: inline namespace _V2 900171: { 900171: template 900171: 900171: _FIter 900171: rotate(_FIter, _FIter, _FIter); 900171: } 900171: 900171: template 900171: 900171: _OIter 900171: rotate_copy(_FIter, _FIter, _FIter, _OIter); 900171: # 625 "/usr/aarch64-linux-gnu/include/c++/12/bits/algorithmfwd.h" 3 900171: template 900171: void 900171: shuffle(_RAIter, _RAIter, _UGenerator&&); 900171: 900171: 900171: template 900171: 900171: void 900171: sort_heap(_RAIter, _RAIter); 900171: 900171: template 900171: 900171: void 900171: sort_heap(_RAIter, _RAIter, _Compare); 900171: 900171: template 900171: _BIter 900171: stable_partition(_BIter, _BIter, _Predicate); 900171: # 658 "/usr/aarch64-linux-gnu/include/c++/12/bits/algorithmfwd.h" 3 900171: template 900171: 900171: _FIter2 900171: swap_ranges(_FIter1, _FIter1, _FIter2); 900171: 900171: 900171: 900171: template 900171: 900171: _FIter 900171: unique(_FIter, _FIter); 900171: 900171: template 900171: 900171: _FIter 900171: unique(_FIter, _FIter, _BinaryPredicate); 900171: 900171: 900171: 900171: template 900171: 900171: _FIter 900171: upper_bound(_FIter, _FIter, const _Tp&); 900171: 900171: template 900171: 900171: _FIter 900171: upper_bound(_FIter, _FIter, const _Tp&, _Compare); 900171: 900171: 900171: 900171: template 900171: 900171: _FIter 900171: adjacent_find(_FIter, _FIter); 900171: 900171: template 900171: 900171: _FIter 900171: adjacent_find(_FIter, _FIter, _BinaryPredicate); 900171: 900171: template 900171: 900171: typename iterator_traits<_IIter>::difference_type 900171: count(_IIter, _IIter, const _Tp&); 900171: 900171: template 900171: 900171: typename iterator_traits<_IIter>::difference_type 900171: count_if(_IIter, _IIter, _Predicate); 900171: 900171: template 900171: 900171: bool 900171: equal(_IIter1, _IIter1, _IIter2); 900171: 900171: template 900171: 900171: bool 900171: equal(_IIter1, _IIter1, _IIter2, _BinaryPredicate); 900171: 900171: template 900171: 900171: _IIter 900171: find(_IIter, _IIter, const _Tp&); 900171: 900171: template 900171: 900171: _FIter1 900171: find_first_of(_FIter1, _FIter1, _FIter2, _FIter2); 900171: 900171: template 900171: 900171: _FIter1 900171: find_first_of(_FIter1, _FIter1, _FIter2, _FIter2, _BinaryPredicate); 900171: 900171: template 900171: 900171: _IIter 900171: find_if(_IIter, _IIter, _Predicate); 900171: 900171: template 900171: 900171: _Funct 900171: for_each(_IIter, _IIter, _Funct); 900171: 900171: template 900171: 900171: void 900171: generate(_FIter, _FIter, _Generator); 900171: 900171: template 900171: 900171: _OIter 900171: generate_n(_OIter, _Size, _Generator); 900171: 900171: template 900171: 900171: bool 900171: lexicographical_compare(_IIter1, _IIter1, _IIter2, _IIter2); 900171: 900171: template 900171: 900171: bool 900171: lexicographical_compare(_IIter1, _IIter1, _IIter2, _IIter2, _Compare); 900171: 900171: template 900171: 900171: _FIter 900171: max_element(_FIter, _FIter); 900171: 900171: template 900171: 900171: _FIter 900171: max_element(_FIter, _FIter, _Compare); 900171: 900171: template 900171: 900171: _OIter 900171: merge(_IIter1, _IIter1, _IIter2, _IIter2, _OIter); 900171: 900171: template 900171: 900171: _OIter 900171: merge(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare); 900171: 900171: template 900171: 900171: _FIter 900171: min_element(_FIter, _FIter); 900171: 900171: template 900171: 900171: _FIter 900171: min_element(_FIter, _FIter, _Compare); 900171: 900171: template 900171: 900171: pair<_IIter1, _IIter2> 900171: mismatch(_IIter1, _IIter1, _IIter2); 900171: 900171: template 900171: 900171: pair<_IIter1, _IIter2> 900171: mismatch(_IIter1, _IIter1, _IIter2, _BinaryPredicate); 900171: 900171: template 900171: 900171: void 900171: nth_element(_RAIter, _RAIter, _RAIter); 900171: 900171: template 900171: 900171: void 900171: nth_element(_RAIter, _RAIter, _RAIter, _Compare); 900171: 900171: template 900171: 900171: void 900171: partial_sort(_RAIter, _RAIter, _RAIter); 900171: 900171: template 900171: 900171: void 900171: partial_sort(_RAIter, _RAIter, _RAIter, _Compare); 900171: 900171: template 900171: 900171: _BIter 900171: partition(_BIter, _BIter, _Predicate); 900171: 900171: template 900171: void 900171: random_shuffle(_RAIter, _RAIter); 900171: 900171: template 900171: void 900171: random_shuffle(_RAIter, _RAIter, 900171: 900171: _Generator&&); 900171: 900171: 900171: 900171: 900171: template 900171: 900171: void 900171: replace(_FIter, _FIter, const _Tp&, const _Tp&); 900171: 900171: template 900171: 900171: void 900171: replace_if(_FIter, _FIter, _Predicate, const _Tp&); 900171: 900171: template 900171: 900171: _FIter1 900171: search(_FIter1, _FIter1, _FIter2, _FIter2); 900171: 900171: template 900171: 900171: _FIter1 900171: search(_FIter1, _FIter1, _FIter2, _FIter2, _BinaryPredicate); 900171: 900171: template 900171: 900171: _FIter 900171: search_n(_FIter, _FIter, _Size, const _Tp&); 900171: 900171: template 900171: 900171: _FIter 900171: search_n(_FIter, _FIter, _Size, const _Tp&, _BinaryPredicate); 900171: 900171: template 900171: 900171: _OIter 900171: set_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter); 900171: 900171: template 900171: 900171: _OIter 900171: set_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare); 900171: 900171: template 900171: 900171: _OIter 900171: set_intersection(_IIter1, _IIter1, _IIter2, _IIter2, _OIter); 900171: 900171: template 900171: 900171: _OIter 900171: set_intersection(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare); 900171: 900171: template 900171: 900171: _OIter 900171: set_symmetric_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter); 900171: 900171: template 900171: 900171: _OIter 900171: set_symmetric_difference(_IIter1, _IIter1, _IIter2, _IIter2, 900171: _OIter, _Compare); 900171: 900171: template 900171: 900171: _OIter 900171: set_union(_IIter1, _IIter1, _IIter2, _IIter2, _OIter); 900171: 900171: template 900171: 900171: _OIter 900171: set_union(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare); 900171: 900171: template 900171: 900171: void 900171: sort(_RAIter, _RAIter); 900171: 900171: template 900171: 900171: void 900171: sort(_RAIter, _RAIter, _Compare); 900171: 900171: template 900171: void 900171: stable_sort(_RAIter, _RAIter); 900171: 900171: template 900171: void 900171: stable_sort(_RAIter, _RAIter, _Compare); 900171: 900171: template 900171: 900171: _OIter 900171: transform(_IIter, _IIter, _OIter, _UnaryOperation); 900171: 900171: template 900171: 900171: _OIter 900171: transform(_IIter1, _IIter1, _IIter2, _OIter, _BinaryOperation); 900171: 900171: template 900171: 900171: _OIter 900171: unique_copy(_IIter, _IIter, _OIter); 900171: 900171: template 900171: 900171: _OIter 900171: unique_copy(_IIter, _IIter, _OIter, _BinaryPredicate); 900171: 900171: 900171: 900171: } 900171: # 60 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algo.h" 2 3 900171: # 1 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_heap.h" 1 3 900171: # 63 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_heap.h" 3 900171: namespace std __attribute__ ((__visibility__ ("default"))) 900171: { 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: template 900171: 900171: _Distance 900171: __is_heap_until(_RandomAccessIterator __first, _Distance __n, 900171: _Compare& __comp) 900171: { 900171: _Distance __parent = 0; 900171: for (_Distance __child = 1; __child < __n; ++__child) 900171: { 900171: if (__comp(__first + __parent, __first + __child)) 900171: return __child; 900171: if ((__child & 1) == 0) 900171: ++__parent; 900171: } 900171: return __n; 900171: } 900171: 900171: 900171: 900171: template 900171: 900171: inline bool 900171: __is_heap(_RandomAccessIterator __first, _Distance __n) 900171: { 900171: __gnu_cxx::__ops::_Iter_less_iter __comp; 900171: return std::__is_heap_until(__first, __n, __comp) == __n; 900171: } 900171: 900171: template 900171: 900171: inline bool 900171: __is_heap(_RandomAccessIterator __first, _Compare __comp, _Distance __n) 900171: { 900171: typedef __decltype(__comp) _Cmp; 900171: __gnu_cxx::__ops::_Iter_comp_iter<_Cmp> __cmp(std::move(__comp)); 900171: return std::__is_heap_until(__first, __n, __cmp) == __n; 900171: } 900171: 900171: template 900171: 900171: inline bool 900171: __is_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) 900171: { return std::__is_heap(__first, std::distance(__first, __last)); } 900171: 900171: template 900171: 900171: inline bool 900171: __is_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, 900171: _Compare __comp) 900171: { 900171: return std::__is_heap(__first, std::move(__comp), 900171: std::distance(__first, __last)); 900171: } 900171: 900171: 900171: 900171: 900171: template 900171: 900171: void 900171: __push_heap(_RandomAccessIterator __first, 900171: _Distance __holeIndex, _Distance __topIndex, _Tp __value, 900171: _Compare& __comp) 900171: { 900171: _Distance __parent = (__holeIndex - 1) / 2; 900171: while (__holeIndex > __topIndex && __comp(__first + __parent, __value)) 900171: { 900171: *(__first + __holeIndex) = std::move(*(__first + __parent)); 900171: __holeIndex = __parent; 900171: __parent = (__holeIndex - 1) / 2; 900171: } 900171: *(__first + __holeIndex) = std::move(__value); 900171: } 900171: # 159 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_heap.h" 3 900171: template 900171: 900171: inline void 900171: push_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) 900171: { 900171: typedef typename iterator_traits<_RandomAccessIterator>::value_type 900171: _ValueType; 900171: typedef typename iterator_traits<_RandomAccessIterator>::difference_type 900171: _DistanceType; 900171: 900171: 900171: 900171: 900171: 900171: ; 900171: ; 900171: ; 900171: 900171: __gnu_cxx::__ops::_Iter_less_val __comp; 900171: _ValueType __value = std::move(*(__last - 1)); 900171: std::__push_heap(__first, _DistanceType((__last - __first) - 1), 900171: _DistanceType(0), std::move(__value), __comp); 900171: } 900171: # 195 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_heap.h" 3 900171: template 900171: 900171: inline void 900171: push_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, 900171: _Compare __comp) 900171: { 900171: typedef typename iterator_traits<_RandomAccessIterator>::value_type 900171: _ValueType; 900171: typedef typename iterator_traits<_RandomAccessIterator>::difference_type 900171: _DistanceType; 900171: 900171: 900171: 900171: 900171: ; 900171: ; 900171: ; 900171: 900171: __decltype(__gnu_cxx::__ops::__iter_comp_val(std::move(__comp))) 900171: __cmp(std::move(__comp)); 900171: _ValueType __value = std::move(*(__last - 1)); 900171: std::__push_heap(__first, _DistanceType((__last - __first) - 1), 900171: _DistanceType(0), std::move(__value), __cmp); 900171: } 900171: 900171: template 900171: 900171: void 900171: __adjust_heap(_RandomAccessIterator __first, _Distance __holeIndex, 900171: _Distance __len, _Tp __value, _Compare __comp) 900171: { 900171: const _Distance __topIndex = __holeIndex; 900171: _Distance __secondChild = __holeIndex; 900171: while (__secondChild < (__len - 1) / 2) 900171: { 900171: __secondChild = 2 * (__secondChild + 1); 900171: if (__comp(__first + __secondChild, 900171: __first + (__secondChild - 1))) 900171: __secondChild--; 900171: *(__first + __holeIndex) = std::move(*(__first + __secondChild)); 900171: __holeIndex = __secondChild; 900171: } 900171: if ((__len & 1) == 0 && __secondChild == (__len - 2) / 2) 900171: { 900171: __secondChild = 2 * (__secondChild + 1); 900171: *(__first + __holeIndex) = std::move(*(__first + (__secondChild - 1))) 900171: ; 900171: __holeIndex = __secondChild - 1; 900171: } 900171: __decltype(__gnu_cxx::__ops::__iter_comp_val(std::move(__comp))) 900171: __cmp(std::move(__comp)); 900171: std::__push_heap(__first, __holeIndex, __topIndex, 900171: std::move(__value), __cmp); 900171: } 900171: 900171: template 900171: 900171: inline void 900171: __pop_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, 900171: _RandomAccessIterator __result, _Compare& __comp) 900171: { 900171: typedef typename iterator_traits<_RandomAccessIterator>::value_type 900171: _ValueType; 900171: typedef typename iterator_traits<_RandomAccessIterator>::difference_type 900171: _DistanceType; 900171: 900171: _ValueType __value = std::move(*__result); 900171: *__result = std::move(*__first); 900171: std::__adjust_heap(__first, _DistanceType(0), 900171: _DistanceType(__last - __first), 900171: std::move(__value), __comp); 900171: } 900171: # 280 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_heap.h" 3 900171: template 900171: 900171: inline void 900171: pop_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) 900171: { 900171: 900171: 900171: 900171: 900171: 900171: ; 900171: ; 900171: ; 900171: ; 900171: 900171: if (__last - __first > 1) 900171: { 900171: --__last; 900171: __gnu_cxx::__ops::_Iter_less_iter __comp; 900171: std::__pop_heap(__first, __last, __last, __comp); 900171: } 900171: } 900171: # 314 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_heap.h" 3 900171: template 900171: 900171: inline void 900171: pop_heap(_RandomAccessIterator __first, 900171: _RandomAccessIterator __last, _Compare __comp) 900171: { 900171: 900171: 900171: 900171: ; 900171: ; 900171: ; 900171: ; 900171: 900171: if (__last - __first > 1) 900171: { 900171: typedef __decltype(__comp) _Cmp; 900171: __gnu_cxx::__ops::_Iter_comp_iter<_Cmp> __cmp(std::move(__comp)); 900171: --__last; 900171: std::__pop_heap(__first, __last, __last, __cmp); 900171: } 900171: } 900171: 900171: template 900171: 900171: void 900171: __make_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, 900171: _Compare& __comp) 900171: { 900171: typedef typename iterator_traits<_RandomAccessIterator>::value_type 900171: _ValueType; 900171: typedef typename iterator_traits<_RandomAccessIterator>::difference_type 900171: _DistanceType; 900171: 900171: if (__last - __first < 2) 900171: return; 900171: 900171: const _DistanceType __len = __last - __first; 900171: _DistanceType __parent = (__len - 2) / 2; 900171: while (true) 900171: { 900171: _ValueType __value = std::move(*(__first + __parent)); 900171: std::__adjust_heap(__first, __parent, __len, std::move(__value), 900171: __comp); 900171: if (__parent == 0) 900171: return; 900171: __parent--; 900171: } 900171: } 900171: # 372 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_heap.h" 3 900171: template 900171: 900171: inline void 900171: make_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) 900171: { 900171: 900171: 900171: 900171: 900171: 900171: ; 900171: ; 900171: 900171: __gnu_cxx::__ops::_Iter_less_iter __comp; 900171: std::__make_heap(__first, __last, __comp); 900171: } 900171: # 399 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_heap.h" 3 900171: template 900171: 900171: inline void 900171: make_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, 900171: _Compare __comp) 900171: { 900171: 900171: 900171: 900171: ; 900171: ; 900171: 900171: typedef __decltype(__comp) _Cmp; 900171: __gnu_cxx::__ops::_Iter_comp_iter<_Cmp> __cmp(std::move(__comp)); 900171: std::__make_heap(__first, __last, __cmp); 900171: } 900171: 900171: template 900171: 900171: void 900171: __sort_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, 900171: _Compare& __comp) 900171: { 900171: while (__last - __first > 1) 900171: { 900171: --__last; 900171: std::__pop_heap(__first, __last, __last, __comp); 900171: } 900171: } 900171: # 437 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_heap.h" 3 900171: template 900171: 900171: inline void 900171: sort_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) 900171: { 900171: 900171: 900171: 900171: 900171: 900171: ; 900171: ; 900171: ; 900171: 900171: __gnu_cxx::__ops::_Iter_less_iter __comp; 900171: std::__sort_heap(__first, __last, __comp); 900171: } 900171: # 465 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_heap.h" 3 900171: template 900171: 900171: inline void 900171: sort_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, 900171: _Compare __comp) 900171: { 900171: 900171: 900171: 900171: ; 900171: ; 900171: ; 900171: 900171: typedef __decltype(__comp) _Cmp; 900171: __gnu_cxx::__ops::_Iter_comp_iter<_Cmp> __cmp(std::move(__comp)); 900171: std::__sort_heap(__first, __last, __cmp); 900171: } 900171: # 494 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_heap.h" 3 900171: template 900171: 900171: inline _RandomAccessIterator 900171: is_heap_until(_RandomAccessIterator __first, _RandomAccessIterator __last) 900171: { 900171: 900171: 900171: 900171: 900171: 900171: ; 900171: ; 900171: 900171: __gnu_cxx::__ops::_Iter_less_iter __comp; 900171: return __first + 900171: std::__is_heap_until(__first, std::distance(__first, __last), __comp); 900171: } 900171: # 523 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_heap.h" 3 900171: template 900171: 900171: inline _RandomAccessIterator 900171: is_heap_until(_RandomAccessIterator __first, _RandomAccessIterator __last, 900171: _Compare __comp) 900171: { 900171: 900171: 900171: 900171: ; 900171: ; 900171: 900171: typedef __decltype(__comp) _Cmp; 900171: __gnu_cxx::__ops::_Iter_comp_iter<_Cmp> __cmp(std::move(__comp)); 900171: return __first 900171: + std::__is_heap_until(__first, std::distance(__first, __last), __cmp); 900171: } 900171: # 548 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_heap.h" 3 900171: template 900171: 900171: inline bool 900171: is_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) 900171: { return std::is_heap_until(__first, __last) == __last; } 900171: # 562 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_heap.h" 3 900171: template 900171: 900171: inline bool 900171: is_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, 900171: _Compare __comp) 900171: { 900171: 900171: 900171: 900171: ; 900171: ; 900171: 900171: const auto __dist = std::distance(__first, __last); 900171: typedef __decltype(__comp) _Cmp; 900171: __gnu_cxx::__ops::_Iter_comp_iter<_Cmp> __cmp(std::move(__comp)); 900171: return std::__is_heap_until(__first, __dist, __cmp) == __dist; 900171: } 900171: 900171: 900171: 900171: } 900171: # 61 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algo.h" 2 3 900171: 900171: 900171: 900171: 900171: # 1 "/usr/aarch64-linux-gnu/include/c++/12/bits/uniform_int_dist.h" 1 3 900171: # 41 "/usr/aarch64-linux-gnu/include/c++/12/bits/uniform_int_dist.h" 3 900171: namespace std __attribute__ ((__visibility__ ("default"))) 900171: { 900171: 900171: # 58 "/usr/aarch64-linux-gnu/include/c++/12/bits/uniform_int_dist.h" 3 900171: namespace __detail 900171: { 900171: 900171: 900171: 900171: template 900171: constexpr bool 900171: _Power_of_2(_Tp __x) 900171: { 900171: return ((__x - 1) & __x) == 0; 900171: } 900171: } 900171: 900171: 900171: 900171: 900171: 900171: 900171: template 900171: class uniform_int_distribution 900171: { 900171: static_assert(std::is_integral<_IntType>::value, 900171: "template argument must be an integral type"); 900171: 900171: public: 900171: 900171: typedef _IntType result_type; 900171: 900171: struct param_type 900171: { 900171: typedef uniform_int_distribution<_IntType> distribution_type; 900171: 900171: param_type() : param_type(0) { } 900171: 900171: explicit 900171: param_type(_IntType __a, 900171: _IntType __b = __gnu_cxx::__int_traits<_IntType>::__max) 900171: : _M_a(__a), _M_b(__b) 900171: { 900171: do { if (std::__is_constant_evaluated() && !bool(_M_a <= _M_b)) __builtin_unreachable(); } while (false); 900171: } 900171: 900171: result_type 900171: a() const 900171: { return _M_a; } 900171: 900171: result_type 900171: b() const 900171: { return _M_b; } 900171: 900171: friend bool 900171: operator==(const param_type& __p1, const param_type& __p2) 900171: { return __p1._M_a == __p2._M_a && __p1._M_b == __p2._M_b; } 900171: 900171: friend bool 900171: operator!=(const param_type& __p1, const param_type& __p2) 900171: { return !(__p1 == __p2); } 900171: 900171: private: 900171: _IntType _M_a; 900171: _IntType _M_b; 900171: }; 900171: 900171: public: 900171: 900171: 900171: 900171: uniform_int_distribution() : uniform_int_distribution(0) { } 900171: 900171: 900171: 900171: 900171: explicit 900171: uniform_int_distribution(_IntType __a, 900171: _IntType __b 900171: = __gnu_cxx::__int_traits<_IntType>::__max) 900171: : _M_param(__a, __b) 900171: { } 900171: 900171: explicit 900171: uniform_int_distribution(const param_type& __p) 900171: : _M_param(__p) 900171: { } 900171: 900171: 900171: 900171: 900171: 900171: 900171: void 900171: reset() { } 900171: 900171: result_type 900171: a() const 900171: { return _M_param.a(); } 900171: 900171: result_type 900171: b() const 900171: { return _M_param.b(); } 900171: 900171: 900171: 900171: 900171: param_type 900171: param() const 900171: { return _M_param; } 900171: 900171: 900171: 900171: 900171: 900171: void 900171: param(const param_type& __param) 900171: { _M_param = __param; } 900171: 900171: 900171: 900171: 900171: result_type 900171: min() const 900171: { return this->a(); } 900171: 900171: 900171: 900171: 900171: result_type 900171: max() const 900171: { return this->b(); } 900171: 900171: 900171: 900171: 900171: template 900171: result_type 900171: operator()(_UniformRandomBitGenerator& __urng) 900171: { return this->operator()(__urng, _M_param); } 900171: 900171: template 900171: result_type 900171: operator()(_UniformRandomBitGenerator& __urng, 900171: const param_type& __p); 900171: 900171: template 900171: void 900171: __generate(_ForwardIterator __f, _ForwardIterator __t, 900171: _UniformRandomBitGenerator& __urng) 900171: { this->__generate(__f, __t, __urng, _M_param); } 900171: 900171: template 900171: void 900171: __generate(_ForwardIterator __f, _ForwardIterator __t, 900171: _UniformRandomBitGenerator& __urng, 900171: const param_type& __p) 900171: { this->__generate_impl(__f, __t, __urng, __p); } 900171: 900171: template 900171: void 900171: __generate(result_type* __f, result_type* __t, 900171: _UniformRandomBitGenerator& __urng, 900171: const param_type& __p) 900171: { this->__generate_impl(__f, __t, __urng, __p); } 900171: 900171: 900171: 900171: 900171: 900171: friend bool 900171: operator==(const uniform_int_distribution& __d1, 900171: const uniform_int_distribution& __d2) 900171: { return __d1._M_param == __d2._M_param; } 900171: 900171: private: 900171: template 900171: void 900171: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, 900171: _UniformRandomBitGenerator& __urng, 900171: const param_type& __p); 900171: 900171: param_type _M_param; 900171: 900171: 900171: 900171: 900171: template 900171: static _Up 900171: _S_nd(_Urbg& __g, _Up __range) 900171: { 900171: using _Up_traits = __gnu_cxx::__int_traits<_Up>; 900171: using _Wp_traits = __gnu_cxx::__int_traits<_Wp>; 900171: static_assert(!_Up_traits::__is_signed, "U must be unsigned"); 900171: static_assert(!_Wp_traits::__is_signed, "W must be unsigned"); 900171: static_assert(_Wp_traits::__digits == (2 * _Up_traits::__digits), 900171: "W must be twice as wide as U"); 900171: 900171: 900171: 900171: 900171: _Wp __product = _Wp(__g()) * _Wp(__range); 900171: _Up __low = _Up(__product); 900171: if (__low < __range) 900171: { 900171: _Up __threshold = -__range % __range; 900171: while (__low < __threshold) 900171: { 900171: __product = _Wp(__g()) * _Wp(__range); 900171: __low = _Up(__product); 900171: } 900171: } 900171: return __product >> _Up_traits::__digits; 900171: } 900171: }; 900171: 900171: template 900171: template 900171: typename uniform_int_distribution<_IntType>::result_type 900171: uniform_int_distribution<_IntType>:: 900171: operator()(_UniformRandomBitGenerator& __urng, 900171: const param_type& __param) 900171: { 900171: typedef typename _UniformRandomBitGenerator::result_type _Gresult_type; 900171: typedef typename make_unsigned::type __utype; 900171: typedef typename common_type<_Gresult_type, __utype>::type __uctype; 900171: 900171: constexpr __uctype __urngmin = _UniformRandomBitGenerator::min(); 900171: constexpr __uctype __urngmax = _UniformRandomBitGenerator::max(); 900171: static_assert( __urngmin < __urngmax, 900171: "Uniform random bit generator must define min() < max()"); 900171: constexpr __uctype __urngrange = __urngmax - __urngmin; 900171: 900171: const __uctype __urange 900171: = __uctype(__param.b()) - __uctype(__param.a()); 900171: 900171: __uctype __ret; 900171: if (__urngrange > __urange) 900171: { 900171: 900171: 900171: const __uctype __uerange = __urange + 1; 900171: 900171: 900171: 900171: if (__urngrange == 0xffffffffffffffffUL) 900171: { 900171: 900171: 900171: long unsigned int __u64erange = __uerange; 900171: __ret = __extension__ _S_nd(__urng, 900171: __u64erange); 900171: } 900171: else 900171: 900171: if (__urngrange == 0xffffffffU) 900171: { 900171: 900171: 900171: unsigned int __u32erange = __uerange; 900171: __ret = _S_nd(__urng, __u32erange); 900171: } 900171: else 900171: 900171: { 900171: 900171: const __uctype __scaling = __urngrange / __uerange; 900171: const __uctype __past = __uerange * __scaling; 900171: do 900171: __ret = __uctype(__urng()) - __urngmin; 900171: while (__ret >= __past); 900171: __ret /= __scaling; 900171: } 900171: } 900171: else if (__urngrange < __urange) 900171: { 900171: # 348 "/usr/aarch64-linux-gnu/include/c++/12/bits/uniform_int_dist.h" 3 900171: __uctype __tmp; 900171: do 900171: { 900171: const __uctype __uerngrange = __urngrange + 1; 900171: __tmp = (__uerngrange * operator() 900171: (__urng, param_type(0, __urange / __uerngrange))); 900171: __ret = __tmp + (__uctype(__urng()) - __urngmin); 900171: } 900171: while (__ret > __urange || __ret < __tmp); 900171: } 900171: else 900171: __ret = __uctype(__urng()) - __urngmin; 900171: 900171: return __ret + __param.a(); 900171: } 900171: 900171: 900171: template 900171: template 900171: void 900171: uniform_int_distribution<_IntType>:: 900171: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, 900171: _UniformRandomBitGenerator& __urng, 900171: const param_type& __param) 900171: { 900171: 900171: typedef typename _UniformRandomBitGenerator::result_type _Gresult_type; 900171: typedef typename make_unsigned::type __utype; 900171: typedef typename common_type<_Gresult_type, __utype>::type __uctype; 900171: 900171: static_assert( __urng.min() < __urng.max(), 900171: "Uniform random bit generator must define min() < max()"); 900171: 900171: constexpr __uctype __urngmin = __urng.min(); 900171: constexpr __uctype __urngmax = __urng.max(); 900171: constexpr __uctype __urngrange = __urngmax - __urngmin; 900171: const __uctype __urange 900171: = __uctype(__param.b()) - __uctype(__param.a()); 900171: 900171: __uctype __ret; 900171: 900171: if (__urngrange > __urange) 900171: { 900171: if (__detail::_Power_of_2(__urngrange + 1) 900171: && __detail::_Power_of_2(__urange + 1)) 900171: { 900171: while (__f != __t) 900171: { 900171: __ret = __uctype(__urng()) - __urngmin; 900171: *__f++ = (__ret & __urange) + __param.a(); 900171: } 900171: } 900171: else 900171: { 900171: 900171: const __uctype __uerange = __urange + 1; 900171: const __uctype __scaling = __urngrange / __uerange; 900171: const __uctype __past = __uerange * __scaling; 900171: while (__f != __t) 900171: { 900171: do 900171: __ret = __uctype(__urng()) - __urngmin; 900171: while (__ret >= __past); 900171: *__f++ = __ret / __scaling + __param.a(); 900171: } 900171: } 900171: } 900171: else if (__urngrange < __urange) 900171: { 900171: # 433 "/usr/aarch64-linux-gnu/include/c++/12/bits/uniform_int_dist.h" 3 900171: __uctype __tmp; 900171: while (__f != __t) 900171: { 900171: do 900171: { 900171: constexpr __uctype __uerngrange = __urngrange + 1; 900171: __tmp = (__uerngrange * operator() 900171: (__urng, param_type(0, __urange / __uerngrange))); 900171: __ret = __tmp + (__uctype(__urng()) - __urngmin); 900171: } 900171: while (__ret > __urange || __ret < __tmp); 900171: *__f++ = __ret; 900171: } 900171: } 900171: else 900171: while (__f != __t) 900171: *__f++ = __uctype(__urng()) - __urngmin + __param.a(); 900171: } 900171: 900171: 900171: 900171: 900171: } 900171: # 66 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algo.h" 2 3 900171: 900171: 900171: 900171: # 1 "/usr/aarch64-linux-gnu/include/c++/12/cstdlib" 1 3 900171: # 39 "/usr/aarch64-linux-gnu/include/c++/12/cstdlib" 3 900171: 900171: # 40 "/usr/aarch64-linux-gnu/include/c++/12/cstdlib" 3 900171: # 70 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algo.h" 2 3 900171: 900171: 900171: 900171: 900171: namespace std __attribute__ ((__visibility__ ("default"))) 900171: { 900171: 900171: 900171: 900171: template 900171: 900171: void 900171: __move_median_to_first(_Iterator __result,_Iterator __a, _Iterator __b, 900171: _Iterator __c, _Compare __comp) 900171: { 900171: if (__comp(__a, __b)) 900171: { 900171: if (__comp(__b, __c)) 900171: std::iter_swap(__result, __b); 900171: else if (__comp(__a, __c)) 900171: std::iter_swap(__result, __c); 900171: else 900171: std::iter_swap(__result, __a); 900171: } 900171: else if (__comp(__a, __c)) 900171: std::iter_swap(__result, __a); 900171: else if (__comp(__b, __c)) 900171: std::iter_swap(__result, __c); 900171: else 900171: std::iter_swap(__result, __b); 900171: } 900171: 900171: 900171: template 900171: 900171: inline _InputIterator 900171: __find_if_not(_InputIterator __first, _InputIterator __last, 900171: _Predicate __pred) 900171: { 900171: return std::__find_if(__first, __last, 900171: __gnu_cxx::__ops::__negate(__pred), 900171: std::__iterator_category(__first)); 900171: } 900171: 900171: 900171: 900171: 900171: template 900171: 900171: _InputIterator 900171: __find_if_not_n(_InputIterator __first, _Distance& __len, _Predicate __pred) 900171: { 900171: for (; __len; --__len, (void) ++__first) 900171: if (!__pred(__first)) 900171: break; 900171: return __first; 900171: } 900171: # 141 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algo.h" 3 900171: template 900171: 900171: _ForwardIterator1 900171: __search(_ForwardIterator1 __first1, _ForwardIterator1 __last1, 900171: _ForwardIterator2 __first2, _ForwardIterator2 __last2, 900171: _BinaryPredicate __predicate) 900171: { 900171: 900171: if (__first1 == __last1 || __first2 == __last2) 900171: return __first1; 900171: 900171: 900171: _ForwardIterator2 __p1(__first2); 900171: if (++__p1 == __last2) 900171: return std::__find_if(__first1, __last1, 900171: __gnu_cxx::__ops::__iter_comp_iter(__predicate, __first2)); 900171: 900171: 900171: _ForwardIterator1 __current = __first1; 900171: 900171: for (;;) 900171: { 900171: __first1 = 900171: std::__find_if(__first1, __last1, 900171: __gnu_cxx::__ops::__iter_comp_iter(__predicate, __first2)); 900171: 900171: if (__first1 == __last1) 900171: return __last1; 900171: 900171: _ForwardIterator2 __p = __p1; 900171: __current = __first1; 900171: if (++__current == __last1) 900171: return __last1; 900171: 900171: while (__predicate(__current, __p)) 900171: { 900171: if (++__p == __last2) 900171: return __first1; 900171: if (++__current == __last1) 900171: return __last1; 900171: } 900171: ++__first1; 900171: } 900171: return __first1; 900171: } 900171: 900171: 900171: 900171: 900171: 900171: 900171: template 900171: 900171: _ForwardIterator 900171: __search_n_aux(_ForwardIterator __first, _ForwardIterator __last, 900171: _Integer __count, _UnaryPredicate __unary_pred, 900171: std::forward_iterator_tag) 900171: { 900171: __first = std::__find_if(__first, __last, __unary_pred); 900171: while (__first != __last) 900171: { 900171: typename iterator_traits<_ForwardIterator>::difference_type 900171: __n = __count; 900171: _ForwardIterator __i = __first; 900171: ++__i; 900171: while (__i != __last && __n != 1 && __unary_pred(__i)) 900171: { 900171: ++__i; 900171: --__n; 900171: } 900171: if (__n == 1) 900171: return __first; 900171: if (__i == __last) 900171: return __last; 900171: __first = std::__find_if(++__i, __last, __unary_pred); 900171: } 900171: return __last; 900171: } 900171: 900171: 900171: 900171: 900171: 900171: template 900171: 900171: _RandomAccessIter 900171: __search_n_aux(_RandomAccessIter __first, _RandomAccessIter __last, 900171: _Integer __count, _UnaryPredicate __unary_pred, 900171: std::random_access_iterator_tag) 900171: { 900171: typedef typename std::iterator_traits<_RandomAccessIter>::difference_type 900171: _DistanceType; 900171: 900171: _DistanceType __tailSize = __last - __first; 900171: _DistanceType __remainder = __count; 900171: 900171: while (__remainder <= __tailSize) 900171: { 900171: __first += __remainder; 900171: __tailSize -= __remainder; 900171: 900171: 900171: _RandomAccessIter __backTrack = __first; 900171: while (__unary_pred(--__backTrack)) 900171: { 900171: if (--__remainder == 0) 900171: return (__first - __count); 900171: } 900171: __remainder = __count + 1 - (__first - __backTrack); 900171: } 900171: return __last; 900171: } 900171: 900171: template 900171: 900171: _ForwardIterator 900171: __search_n(_ForwardIterator __first, _ForwardIterator __last, 900171: _Integer __count, 900171: _UnaryPredicate __unary_pred) 900171: { 900171: if (__count <= 0) 900171: return __first; 900171: 900171: if (__count == 1) 900171: return std::__find_if(__first, __last, __unary_pred); 900171: 900171: return std::__search_n_aux(__first, __last, __count, __unary_pred, 900171: std::__iterator_category(__first)); 900171: } 900171: 900171: 900171: template 900171: 900171: _ForwardIterator1 900171: __find_end(_ForwardIterator1 __first1, _ForwardIterator1 __last1, 900171: _ForwardIterator2 __first2, _ForwardIterator2 __last2, 900171: forward_iterator_tag, forward_iterator_tag, 900171: _BinaryPredicate __comp) 900171: { 900171: if (__first2 == __last2) 900171: return __last1; 900171: 900171: _ForwardIterator1 __result = __last1; 900171: while (1) 900171: { 900171: _ForwardIterator1 __new_result 900171: = std::__search(__first1, __last1, __first2, __last2, __comp); 900171: if (__new_result == __last1) 900171: return __result; 900171: else 900171: { 900171: __result = __new_result; 900171: __first1 = __new_result; 900171: ++__first1; 900171: } 900171: } 900171: } 900171: 900171: 900171: template 900171: 900171: _BidirectionalIterator1 900171: __find_end(_BidirectionalIterator1 __first1, 900171: _BidirectionalIterator1 __last1, 900171: _BidirectionalIterator2 __first2, 900171: _BidirectionalIterator2 __last2, 900171: bidirectional_iterator_tag, bidirectional_iterator_tag, 900171: _BinaryPredicate __comp) 900171: { 900171: 900171: 900171: 900171: 900171: 900171: 900171: typedef reverse_iterator<_BidirectionalIterator1> _RevIterator1; 900171: typedef reverse_iterator<_BidirectionalIterator2> _RevIterator2; 900171: 900171: _RevIterator1 __rlast1(__first1); 900171: _RevIterator2 __rlast2(__first2); 900171: _RevIterator1 __rresult = std::__search(_RevIterator1(__last1), __rlast1, 900171: _RevIterator2(__last2), __rlast2, 900171: __comp); 900171: 900171: if (__rresult == __rlast1) 900171: return __last1; 900171: else 900171: { 900171: _BidirectionalIterator1 __result = __rresult.base(); 900171: std::advance(__result, -std::distance(__first2, __last2)); 900171: return __result; 900171: } 900171: } 900171: # 367 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algo.h" 3 900171: template 900171: 900171: inline _ForwardIterator1 900171: find_end(_ForwardIterator1 __first1, _ForwardIterator1 __last1, 900171: _ForwardIterator2 __first2, _ForwardIterator2 __last2) 900171: { 900171: 900171: 900171: 900171: 900171: 900171: 900171: ; 900171: ; 900171: 900171: return std::__find_end(__first1, __last1, __first2, __last2, 900171: std::__iterator_category(__first1), 900171: std::__iterator_category(__first2), 900171: __gnu_cxx::__ops::__iter_equal_to_iter()); 900171: } 900171: # 416 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algo.h" 3 900171: template 900171: 900171: inline _ForwardIterator1 900171: find_end(_ForwardIterator1 __first1, _ForwardIterator1 __last1, 900171: _ForwardIterator2 __first2, _ForwardIterator2 __last2, 900171: _BinaryPredicate __comp) 900171: { 900171: 900171: 900171: 900171: 900171: 900171: 900171: ; 900171: ; 900171: 900171: return std::__find_end(__first1, __last1, __first2, __last2, 900171: std::__iterator_category(__first1), 900171: std::__iterator_category(__first2), 900171: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 900171: } 900171: # 452 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algo.h" 3 900171: template 900171: 900171: inline bool 900171: all_of(_InputIterator __first, _InputIterator __last, _Predicate __pred) 900171: { return __last == std::find_if_not(__first, __last, __pred); } 900171: # 470 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algo.h" 3 900171: template 900171: 900171: inline bool 900171: none_of(_InputIterator __first, _InputIterator __last, _Predicate __pred) 900171: { return __last == std::find_if(__first, __last, __pred); } 900171: # 489 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algo.h" 3 900171: template 900171: 900171: inline bool 900171: any_of(_InputIterator __first, _InputIterator __last, _Predicate __pred) 900171: { return !std::none_of(__first, __last, __pred); } 900171: # 505 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algo.h" 3 900171: template 900171: 900171: inline _InputIterator 900171: find_if_not(_InputIterator __first, _InputIterator __last, 900171: _Predicate __pred) 900171: { 900171: 900171: 900171: 900171: 900171: ; 900171: return std::__find_if_not(__first, __last, 900171: __gnu_cxx::__ops::__pred_iter(__pred)); 900171: } 900171: # 530 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algo.h" 3 900171: template 900171: 900171: inline bool 900171: is_partitioned(_InputIterator __first, _InputIterator __last, 900171: _Predicate __pred) 900171: { 900171: __first = std::find_if_not(__first, __last, __pred); 900171: if (__first == __last) 900171: return true; 900171: ++__first; 900171: return std::none_of(__first, __last, __pred); 900171: } 900171: # 552 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algo.h" 3 900171: template 900171: 900171: _ForwardIterator 900171: partition_point(_ForwardIterator __first, _ForwardIterator __last, 900171: _Predicate __pred) 900171: { 900171: 900171: 900171: 900171: 900171: 900171: 900171: ; 900171: 900171: typedef typename iterator_traits<_ForwardIterator>::difference_type 900171: _DistanceType; 900171: 900171: _DistanceType __len = std::distance(__first, __last); 900171: 900171: while (__len > 0) 900171: { 900171: _DistanceType __half = __len >> 1; 900171: _ForwardIterator __middle = __first; 900171: std::advance(__middle, __half); 900171: if (__pred(*__middle)) 900171: { 900171: __first = __middle; 900171: ++__first; 900171: __len = __len - __half - 1; 900171: } 900171: else 900171: __len = __half; 900171: } 900171: return __first; 900171: } 900171: 900171: 900171: template 900171: 900171: _OutputIterator 900171: __remove_copy_if(_InputIterator __first, _InputIterator __last, 900171: _OutputIterator __result, _Predicate __pred) 900171: { 900171: for (; __first != __last; ++__first) 900171: if (!__pred(__first)) 900171: { 900171: *__result = *__first; 900171: ++__result; 900171: } 900171: return __result; 900171: } 900171: # 619 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algo.h" 3 900171: template 900171: 900171: inline _OutputIterator 900171: remove_copy(_InputIterator __first, _InputIterator __last, 900171: _OutputIterator __result, const _Tp& __value) 900171: { 900171: 900171: 900171: 900171: 900171: 900171: 900171: ; 900171: 900171: return std::__remove_copy_if(__first, __last, __result, 900171: __gnu_cxx::__ops::__iter_equals_val(__value)); 900171: } 900171: # 652 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algo.h" 3 900171: template 900171: 900171: inline _OutputIterator 900171: remove_copy_if(_InputIterator __first, _InputIterator __last, 900171: _OutputIterator __result, _Predicate __pred) 900171: { 900171: 900171: 900171: 900171: 900171: 900171: 900171: ; 900171: 900171: return std::__remove_copy_if(__first, __last, __result, 900171: __gnu_cxx::__ops::__pred_iter(__pred)); 900171: } 900171: # 687 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algo.h" 3 900171: template 900171: 900171: _OutputIterator 900171: copy_if(_InputIterator __first, _InputIterator __last, 900171: _OutputIterator __result, _Predicate __pred) 900171: { 900171: 900171: 900171: 900171: 900171: 900171: 900171: ; 900171: 900171: for (; __first != __last; ++__first) 900171: if (__pred(*__first)) 900171: { 900171: *__result = *__first; 900171: ++__result; 900171: } 900171: return __result; 900171: } 900171: 900171: template 900171: 900171: _OutputIterator 900171: __copy_n(_InputIterator __first, _Size __n, 900171: _OutputIterator __result, input_iterator_tag) 900171: { 900171: return std::__niter_wrap(__result, 900171: __copy_n_a(__first, __n, 900171: std::__niter_base(__result), true)); 900171: } 900171: 900171: template 900171: 900171: inline _OutputIterator 900171: __copy_n(_RandomAccessIterator __first, _Size __n, 900171: _OutputIterator __result, random_access_iterator_tag) 900171: { return std::copy(__first, __first + __n, __result); } 900171: # 743 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algo.h" 3 900171: template 900171: 900171: inline _OutputIterator 900171: copy_n(_InputIterator __first, _Size __n, _OutputIterator __result) 900171: { 900171: 900171: 900171: 900171: 900171: 900171: const auto __n2 = std::__size_to_integer(__n); 900171: if (__n2 <= 0) 900171: return __result; 900171: 900171: ; 900171: ; 900171: 900171: return std::__copy_n(__first, __n2, __result, 900171: std::__iterator_category(__first)); 900171: } 900171: # 779 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algo.h" 3 900171: template 900171: 900171: pair<_OutputIterator1, _OutputIterator2> 900171: partition_copy(_InputIterator __first, _InputIterator __last, 900171: _OutputIterator1 __out_true, _OutputIterator2 __out_false, 900171: _Predicate __pred) 900171: { 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: ; 900171: 900171: for (; __first != __last; ++__first) 900171: if (__pred(*__first)) 900171: { 900171: *__out_true = *__first; 900171: ++__out_true; 900171: } 900171: else 900171: { 900171: *__out_false = *__first; 900171: ++__out_false; 900171: } 900171: 900171: return pair<_OutputIterator1, _OutputIterator2>(__out_true, __out_false); 900171: } 900171: # 830 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algo.h" 3 900171: template 900171: 900171: inline _ForwardIterator 900171: remove(_ForwardIterator __first, _ForwardIterator __last, 900171: const _Tp& __value) 900171: { 900171: 900171: 900171: 900171: 900171: 900171: ; 900171: 900171: return std::__remove_if(__first, __last, 900171: __gnu_cxx::__ops::__iter_equals_val(__value)); 900171: } 900171: # 864 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algo.h" 3 900171: template 900171: 900171: inline _ForwardIterator 900171: remove_if(_ForwardIterator __first, _ForwardIterator __last, 900171: _Predicate __pred) 900171: { 900171: 900171: 900171: 900171: 900171: 900171: ; 900171: 900171: return std::__remove_if(__first, __last, 900171: __gnu_cxx::__ops::__pred_iter(__pred)); 900171: } 900171: 900171: template 900171: 900171: _ForwardIterator 900171: __adjacent_find(_ForwardIterator __first, _ForwardIterator __last, 900171: _BinaryPredicate __binary_pred) 900171: { 900171: if (__first == __last) 900171: return __last; 900171: _ForwardIterator __next = __first; 900171: while (++__next != __last) 900171: { 900171: if (__binary_pred(__first, __next)) 900171: return __first; 900171: __first = __next; 900171: } 900171: return __last; 900171: } 900171: 900171: template 900171: 900171: _ForwardIterator 900171: __unique(_ForwardIterator __first, _ForwardIterator __last, 900171: _BinaryPredicate __binary_pred) 900171: { 900171: 900171: __first = std::__adjacent_find(__first, __last, __binary_pred); 900171: if (__first == __last) 900171: return __last; 900171: 900171: 900171: _ForwardIterator __dest = __first; 900171: ++__first; 900171: while (++__first != __last) 900171: if (!__binary_pred(__dest, __first)) 900171: *++__dest = std::move(*__first); 900171: return ++__dest; 900171: } 900171: # 933 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algo.h" 3 900171: template 900171: 900171: inline _ForwardIterator 900171: unique(_ForwardIterator __first, _ForwardIterator __last) 900171: { 900171: 900171: 900171: 900171: 900171: 900171: ; 900171: 900171: return std::__unique(__first, __last, 900171: __gnu_cxx::__ops::__iter_equal_to_iter()); 900171: } 900171: # 964 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algo.h" 3 900171: template 900171: 900171: inline _ForwardIterator 900171: unique(_ForwardIterator __first, _ForwardIterator __last, 900171: _BinaryPredicate __binary_pred) 900171: { 900171: 900171: 900171: 900171: 900171: 900171: 900171: ; 900171: 900171: return std::__unique(__first, __last, 900171: __gnu_cxx::__ops::__iter_comp_iter(__binary_pred)); 900171: } 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: template 900171: 900171: _OutputIterator 900171: __unique_copy(_ForwardIterator __first, _ForwardIterator __last, 900171: _OutputIterator __result, _BinaryPredicate __binary_pred, 900171: forward_iterator_tag, output_iterator_tag) 900171: { 900171: 900171: 900171: 900171: 900171: 900171: _ForwardIterator __next = __first; 900171: *__result = *__first; 900171: while (++__next != __last) 900171: if (!__binary_pred(__first, __next)) 900171: { 900171: __first = __next; 900171: *++__result = *__first; 900171: } 900171: return ++__result; 900171: } 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: template 900171: 900171: _OutputIterator 900171: __unique_copy(_InputIterator __first, _InputIterator __last, 900171: _OutputIterator __result, _BinaryPredicate __binary_pred, 900171: input_iterator_tag, output_iterator_tag) 900171: { 900171: 900171: 900171: 900171: 900171: 900171: typename iterator_traits<_InputIterator>::value_type __value = *__first; 900171: __decltype(__gnu_cxx::__ops::__iter_comp_val(__binary_pred)) 900171: __rebound_pred 900171: = __gnu_cxx::__ops::__iter_comp_val(__binary_pred); 900171: *__result = __value; 900171: while (++__first != __last) 900171: if (!__rebound_pred(__first, __value)) 900171: { 900171: __value = *__first; 900171: *++__result = __value; 900171: } 900171: return ++__result; 900171: } 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: template 900171: 900171: _ForwardIterator 900171: __unique_copy(_InputIterator __first, _InputIterator __last, 900171: _ForwardIterator __result, _BinaryPredicate __binary_pred, 900171: input_iterator_tag, forward_iterator_tag) 900171: { 900171: 900171: 900171: 900171: 900171: *__result = *__first; 900171: while (++__first != __last) 900171: if (!__binary_pred(__result, __first)) 900171: *++__result = *__first; 900171: return ++__result; 900171: } 900171: 900171: 900171: 900171: 900171: 900171: 900171: template 900171: 900171: void 900171: __reverse(_BidirectionalIterator __first, _BidirectionalIterator __last, 900171: bidirectional_iterator_tag) 900171: { 900171: while (true) 900171: if (__first == __last || __first == --__last) 900171: return; 900171: else 900171: { 900171: std::iter_swap(__first, __last); 900171: ++__first; 900171: } 900171: } 900171: 900171: 900171: 900171: 900171: 900171: 900171: template 900171: 900171: void 900171: __reverse(_RandomAccessIterator __first, _RandomAccessIterator __last, 900171: random_access_iterator_tag) 900171: { 900171: if (__first == __last) 900171: return; 900171: --__last; 900171: while (__first < __last) 900171: { 900171: std::iter_swap(__first, __last); 900171: ++__first; 900171: --__last; 900171: } 900171: } 900171: # 1125 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algo.h" 3 900171: template 900171: 900171: inline void 900171: reverse(_BidirectionalIterator __first, _BidirectionalIterator __last) 900171: { 900171: 900171: 900171: 900171: ; 900171: std::__reverse(__first, __last, std::__iterator_category(__first)); 900171: } 900171: # 1153 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algo.h" 3 900171: template 900171: 900171: _OutputIterator 900171: reverse_copy(_BidirectionalIterator __first, _BidirectionalIterator __last, 900171: _OutputIterator __result) 900171: { 900171: 900171: 900171: 900171: 900171: 900171: ; 900171: 900171: while (__first != __last) 900171: { 900171: --__last; 900171: *__result = *__last; 900171: ++__result; 900171: } 900171: return __result; 900171: } 900171: 900171: 900171: 900171: 900171: 900171: template 900171: 900171: _EuclideanRingElement 900171: __gcd(_EuclideanRingElement __m, _EuclideanRingElement __n) 900171: { 900171: while (__n != 0) 900171: { 900171: _EuclideanRingElement __t = __m % __n; 900171: __m = __n; 900171: __n = __t; 900171: } 900171: return __m; 900171: } 900171: 900171: inline namespace _V2 900171: { 900171: 900171: 900171: template 900171: 900171: _ForwardIterator 900171: __rotate(_ForwardIterator __first, 900171: _ForwardIterator __middle, 900171: _ForwardIterator __last, 900171: forward_iterator_tag) 900171: { 900171: if (__first == __middle) 900171: return __last; 900171: else if (__last == __middle) 900171: return __first; 900171: 900171: _ForwardIterator __first2 = __middle; 900171: do 900171: { 900171: std::iter_swap(__first, __first2); 900171: ++__first; 900171: ++__first2; 900171: if (__first == __middle) 900171: __middle = __first2; 900171: } 900171: while (__first2 != __last); 900171: 900171: _ForwardIterator __ret = __first; 900171: 900171: __first2 = __middle; 900171: 900171: while (__first2 != __last) 900171: { 900171: std::iter_swap(__first, __first2); 900171: ++__first; 900171: ++__first2; 900171: if (__first == __middle) 900171: __middle = __first2; 900171: else if (__first2 == __last) 900171: __first2 = __middle; 900171: } 900171: return __ret; 900171: } 900171: 900171: 900171: template 900171: 900171: _BidirectionalIterator 900171: __rotate(_BidirectionalIterator __first, 900171: _BidirectionalIterator __middle, 900171: _BidirectionalIterator __last, 900171: bidirectional_iterator_tag) 900171: { 900171: 900171: 900171: 900171: 900171: if (__first == __middle) 900171: return __last; 900171: else if (__last == __middle) 900171: return __first; 900171: 900171: std::__reverse(__first, __middle, bidirectional_iterator_tag()); 900171: std::__reverse(__middle, __last, bidirectional_iterator_tag()); 900171: 900171: while (__first != __middle && __middle != __last) 900171: { 900171: std::iter_swap(__first, --__last); 900171: ++__first; 900171: } 900171: 900171: if (__first == __middle) 900171: { 900171: std::__reverse(__middle, __last, bidirectional_iterator_tag()); 900171: return __last; 900171: } 900171: else 900171: { 900171: std::__reverse(__first, __middle, bidirectional_iterator_tag()); 900171: return __first; 900171: } 900171: } 900171: 900171: 900171: template 900171: 900171: _RandomAccessIterator 900171: __rotate(_RandomAccessIterator __first, 900171: _RandomAccessIterator __middle, 900171: _RandomAccessIterator __last, 900171: random_access_iterator_tag) 900171: { 900171: 900171: 900171: 900171: 900171: if (__first == __middle) 900171: return __last; 900171: else if (__last == __middle) 900171: return __first; 900171: 900171: typedef typename iterator_traits<_RandomAccessIterator>::difference_type 900171: _Distance; 900171: typedef typename iterator_traits<_RandomAccessIterator>::value_type 900171: _ValueType; 900171: 900171: _Distance __n = __last - __first; 900171: _Distance __k = __middle - __first; 900171: 900171: if (__k == __n - __k) 900171: { 900171: std::swap_ranges(__first, __middle, __middle); 900171: return __middle; 900171: } 900171: 900171: _RandomAccessIterator __p = __first; 900171: _RandomAccessIterator __ret = __first + (__last - __middle); 900171: 900171: for (;;) 900171: { 900171: if (__k < __n - __k) 900171: { 900171: if (__is_pod(_ValueType) && __k == 1) 900171: { 900171: _ValueType __t = std::move(*__p); 900171: std::move(__p + 1, __p + __n, __p); 900171: *(__p + __n - 1) = std::move(__t); 900171: return __ret; 900171: } 900171: _RandomAccessIterator __q = __p + __k; 900171: for (_Distance __i = 0; __i < __n - __k; ++ __i) 900171: { 900171: std::iter_swap(__p, __q); 900171: ++__p; 900171: ++__q; 900171: } 900171: __n %= __k; 900171: if (__n == 0) 900171: return __ret; 900171: std::swap(__n, __k); 900171: __k = __n - __k; 900171: } 900171: else 900171: { 900171: __k = __n - __k; 900171: if (__is_pod(_ValueType) && __k == 1) 900171: { 900171: _ValueType __t = std::move(*(__p + __n - 1)); 900171: std::move_backward(__p, __p + __n - 1, __p + __n); 900171: *__p = std::move(__t); 900171: return __ret; 900171: } 900171: _RandomAccessIterator __q = __p + __n; 900171: __p = __q - __k; 900171: for (_Distance __i = 0; __i < __n - __k; ++ __i) 900171: { 900171: --__p; 900171: --__q; 900171: std::iter_swap(__p, __q); 900171: } 900171: __n %= __k; 900171: if (__n == 0) 900171: return __ret; 900171: std::swap(__n, __k); 900171: } 900171: } 900171: } 900171: # 1385 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algo.h" 3 900171: template 900171: 900171: inline _ForwardIterator 900171: rotate(_ForwardIterator __first, _ForwardIterator __middle, 900171: _ForwardIterator __last) 900171: { 900171: 900171: 900171: 900171: ; 900171: ; 900171: 900171: return std::__rotate(__first, __middle, __last, 900171: std::__iterator_category(__first)); 900171: } 900171: 900171: } 900171: # 1423 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algo.h" 3 900171: template 900171: 900171: inline _OutputIterator 900171: rotate_copy(_ForwardIterator __first, _ForwardIterator __middle, 900171: _ForwardIterator __last, _OutputIterator __result) 900171: { 900171: 900171: 900171: 900171: 900171: ; 900171: ; 900171: 900171: return std::copy(__first, __middle, 900171: std::copy(__middle, __last, __result)); 900171: } 900171: 900171: 900171: template 900171: 900171: _ForwardIterator 900171: __partition(_ForwardIterator __first, _ForwardIterator __last, 900171: _Predicate __pred, forward_iterator_tag) 900171: { 900171: if (__first == __last) 900171: return __first; 900171: 900171: while (__pred(*__first)) 900171: if (++__first == __last) 900171: return __first; 900171: 900171: _ForwardIterator __next = __first; 900171: 900171: while (++__next != __last) 900171: if (__pred(*__next)) 900171: { 900171: std::iter_swap(__first, __next); 900171: ++__first; 900171: } 900171: 900171: return __first; 900171: } 900171: 900171: 900171: template 900171: 900171: _BidirectionalIterator 900171: __partition(_BidirectionalIterator __first, _BidirectionalIterator __last, 900171: _Predicate __pred, bidirectional_iterator_tag) 900171: { 900171: while (true) 900171: { 900171: while (true) 900171: if (__first == __last) 900171: return __first; 900171: else if (__pred(*__first)) 900171: ++__first; 900171: else 900171: break; 900171: --__last; 900171: while (true) 900171: if (__first == __last) 900171: return __first; 900171: else if (!bool(__pred(*__last))) 900171: --__last; 900171: else 900171: break; 900171: std::iter_swap(__first, __last); 900171: ++__first; 900171: } 900171: } 900171: # 1503 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algo.h" 3 900171: template 900171: _ForwardIterator 900171: __stable_partition_adaptive(_ForwardIterator __first, 900171: _ForwardIterator __last, 900171: _Predicate __pred, _Distance __len, 900171: _Pointer __buffer, 900171: _Distance __buffer_size) 900171: { 900171: if (__len == 1) 900171: return __first; 900171: 900171: if (__len <= __buffer_size) 900171: { 900171: _ForwardIterator __result1 = __first; 900171: _Pointer __result2 = __buffer; 900171: 900171: 900171: 900171: 900171: *__result2 = std::move(*__first); 900171: ++__result2; 900171: ++__first; 900171: for (; __first != __last; ++__first) 900171: if (__pred(__first)) 900171: { 900171: *__result1 = std::move(*__first); 900171: ++__result1; 900171: } 900171: else 900171: { 900171: *__result2 = std::move(*__first); 900171: ++__result2; 900171: } 900171: 900171: std::move(__buffer, __result2, __result1); 900171: return __result1; 900171: } 900171: 900171: _ForwardIterator __middle = __first; 900171: std::advance(__middle, __len / 2); 900171: _ForwardIterator __left_split = 900171: std::__stable_partition_adaptive(__first, __middle, __pred, 900171: __len / 2, __buffer, 900171: __buffer_size); 900171: 900171: 900171: 900171: _Distance __right_len = __len - __len / 2; 900171: _ForwardIterator __right_split = 900171: std::__find_if_not_n(__middle, __right_len, __pred); 900171: 900171: if (__right_len) 900171: __right_split = 900171: std::__stable_partition_adaptive(__right_split, __last, __pred, 900171: __right_len, 900171: __buffer, __buffer_size); 900171: 900171: return std::rotate(__left_split, __middle, __right_split); 900171: } 900171: 900171: template 900171: _ForwardIterator 900171: __stable_partition(_ForwardIterator __first, _ForwardIterator __last, 900171: _Predicate __pred) 900171: { 900171: __first = std::__find_if_not(__first, __last, __pred); 900171: 900171: if (__first == __last) 900171: return __first; 900171: 900171: typedef typename iterator_traits<_ForwardIterator>::value_type 900171: _ValueType; 900171: typedef typename iterator_traits<_ForwardIterator>::difference_type 900171: _DistanceType; 900171: 900171: _Temporary_buffer<_ForwardIterator, _ValueType> 900171: __buf(__first, std::distance(__first, __last)); 900171: return 900171: std::__stable_partition_adaptive(__first, __last, __pred, 900171: _DistanceType(__buf.requested_size()), 900171: __buf.begin(), 900171: _DistanceType(__buf.size())); 900171: } 900171: # 1605 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algo.h" 3 900171: template 900171: inline _ForwardIterator 900171: stable_partition(_ForwardIterator __first, _ForwardIterator __last, 900171: _Predicate __pred) 900171: { 900171: 900171: 900171: 900171: 900171: 900171: ; 900171: 900171: return std::__stable_partition(__first, __last, 900171: __gnu_cxx::__ops::__pred_iter(__pred)); 900171: } 900171: 900171: 900171: template 900171: 900171: void 900171: __heap_select(_RandomAccessIterator __first, 900171: _RandomAccessIterator __middle, 900171: _RandomAccessIterator __last, _Compare __comp) 900171: { 900171: std::__make_heap(__first, __middle, __comp); 900171: for (_RandomAccessIterator __i = __middle; __i < __last; ++__i) 900171: if (__comp(__i, __first)) 900171: std::__pop_heap(__first, __middle, __i, __comp); 900171: } 900171: 900171: 900171: 900171: template 900171: 900171: _RandomAccessIterator 900171: __partial_sort_copy(_InputIterator __first, _InputIterator __last, 900171: _RandomAccessIterator __result_first, 900171: _RandomAccessIterator __result_last, 900171: _Compare __comp) 900171: { 900171: typedef typename iterator_traits<_InputIterator>::value_type 900171: _InputValueType; 900171: typedef iterator_traits<_RandomAccessIterator> _RItTraits; 900171: typedef typename _RItTraits::difference_type _DistanceType; 900171: 900171: if (__result_first == __result_last) 900171: return __result_last; 900171: _RandomAccessIterator __result_real_last = __result_first; 900171: while (__first != __last && __result_real_last != __result_last) 900171: { 900171: *__result_real_last = *__first; 900171: ++__result_real_last; 900171: ++__first; 900171: } 900171: 900171: std::__make_heap(__result_first, __result_real_last, __comp); 900171: while (__first != __last) 900171: { 900171: if (__comp(__first, __result_first)) 900171: std::__adjust_heap(__result_first, _DistanceType(0), 900171: _DistanceType(__result_real_last 900171: - __result_first), 900171: _InputValueType(*__first), __comp); 900171: ++__first; 900171: } 900171: std::__sort_heap(__result_first, __result_real_last, __comp); 900171: return __result_real_last; 900171: } 900171: # 1693 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algo.h" 3 900171: template 900171: 900171: inline _RandomAccessIterator 900171: partial_sort_copy(_InputIterator __first, _InputIterator __last, 900171: _RandomAccessIterator __result_first, 900171: _RandomAccessIterator __result_last) 900171: { 900171: # 1708 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algo.h" 3 900171: 900171: 900171: 900171: 900171: 900171: 900171: ; 900171: ; 900171: ; 900171: 900171: return std::__partial_sort_copy(__first, __last, 900171: __result_first, __result_last, 900171: __gnu_cxx::__ops::__iter_less_iter()); 900171: } 900171: # 1743 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algo.h" 3 900171: template 900171: 900171: inline _RandomAccessIterator 900171: partial_sort_copy(_InputIterator __first, _InputIterator __last, 900171: _RandomAccessIterator __result_first, 900171: _RandomAccessIterator __result_last, 900171: _Compare __comp) 900171: { 900171: # 1760 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algo.h" 3 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: ; 900171: ; 900171: ; 900171: 900171: return std::__partial_sort_copy(__first, __last, 900171: __result_first, __result_last, 900171: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 900171: } 900171: 900171: 900171: template 900171: 900171: void 900171: __unguarded_linear_insert(_RandomAccessIterator __last, 900171: _Compare __comp) 900171: { 900171: typename iterator_traits<_RandomAccessIterator>::value_type 900171: __val = std::move(*__last); 900171: _RandomAccessIterator __next = __last; 900171: --__next; 900171: while (__comp(__val, __next)) 900171: { 900171: *__last = std::move(*__next); 900171: __last = __next; 900171: --__next; 900171: } 900171: *__last = std::move(__val); 900171: } 900171: 900171: 900171: template 900171: 900171: void 900171: __insertion_sort(_RandomAccessIterator __first, 900171: _RandomAccessIterator __last, _Compare __comp) 900171: { 900171: if (__first == __last) return; 900171: 900171: for (_RandomAccessIterator __i = __first + 1; __i != __last; ++__i) 900171: { 900171: if (__comp(__i, __first)) 900171: { 900171: typename iterator_traits<_RandomAccessIterator>::value_type 900171: __val = std::move(*__i); 900171: std::move_backward(__first, __i, __i + 1); 900171: *__first = std::move(__val); 900171: } 900171: else 900171: std::__unguarded_linear_insert(__i, 900171: __gnu_cxx::__ops::__val_comp_iter(__comp)); 900171: } 900171: } 900171: 900171: 900171: template 900171: 900171: inline void 900171: __unguarded_insertion_sort(_RandomAccessIterator __first, 900171: _RandomAccessIterator __last, _Compare __comp) 900171: { 900171: for (_RandomAccessIterator __i = __first; __i != __last; ++__i) 900171: std::__unguarded_linear_insert(__i, 900171: __gnu_cxx::__ops::__val_comp_iter(__comp)); 900171: } 900171: 900171: 900171: 900171: 900171: 900171: enum { _S_threshold = 16 }; 900171: 900171: 900171: template 900171: 900171: void 900171: __final_insertion_sort(_RandomAccessIterator __first, 900171: _RandomAccessIterator __last, _Compare __comp) 900171: { 900171: if (__last - __first > int(_S_threshold)) 900171: { 900171: std::__insertion_sort(__first, __first + int(_S_threshold), __comp); 900171: std::__unguarded_insertion_sort(__first + int(_S_threshold), __last, 900171: __comp); 900171: } 900171: else 900171: std::__insertion_sort(__first, __last, __comp); 900171: } 900171: 900171: 900171: template 900171: 900171: _RandomAccessIterator 900171: __unguarded_partition(_RandomAccessIterator __first, 900171: _RandomAccessIterator __last, 900171: _RandomAccessIterator __pivot, _Compare __comp) 900171: { 900171: while (true) 900171: { 900171: while (__comp(__first, __pivot)) 900171: ++__first; 900171: --__last; 900171: while (__comp(__pivot, __last)) 900171: --__last; 900171: if (!(__first < __last)) 900171: return __first; 900171: std::iter_swap(__first, __last); 900171: ++__first; 900171: } 900171: } 900171: 900171: 900171: template 900171: 900171: inline _RandomAccessIterator 900171: __unguarded_partition_pivot(_RandomAccessIterator __first, 900171: _RandomAccessIterator __last, _Compare __comp) 900171: { 900171: _RandomAccessIterator __mid = __first + (__last - __first) / 2; 900171: std::__move_median_to_first(__first, __first + 1, __mid, __last - 1, 900171: __comp); 900171: return std::__unguarded_partition(__first + 1, __last, __first, __comp); 900171: } 900171: 900171: template 900171: 900171: inline void 900171: __partial_sort(_RandomAccessIterator __first, 900171: _RandomAccessIterator __middle, 900171: _RandomAccessIterator __last, 900171: _Compare __comp) 900171: { 900171: std::__heap_select(__first, __middle, __last, __comp); 900171: std::__sort_heap(__first, __middle, __comp); 900171: } 900171: 900171: 900171: template 900171: 900171: void 900171: __introsort_loop(_RandomAccessIterator __first, 900171: _RandomAccessIterator __last, 900171: _Size __depth_limit, _Compare __comp) 900171: { 900171: while (__last - __first > int(_S_threshold)) 900171: { 900171: if (__depth_limit == 0) 900171: { 900171: std::__partial_sort(__first, __last, __last, __comp); 900171: return; 900171: } 900171: --__depth_limit; 900171: _RandomAccessIterator __cut = 900171: std::__unguarded_partition_pivot(__first, __last, __comp); 900171: std::__introsort_loop(__cut, __last, __depth_limit, __comp); 900171: __last = __cut; 900171: } 900171: } 900171: 900171: 900171: 900171: template 900171: 900171: inline void 900171: __sort(_RandomAccessIterator __first, _RandomAccessIterator __last, 900171: _Compare __comp) 900171: { 900171: if (__first != __last) 900171: { 900171: std::__introsort_loop(__first, __last, 900171: std::__lg(__last - __first) * 2, 900171: __comp); 900171: std::__final_insertion_sort(__first, __last, __comp); 900171: } 900171: } 900171: 900171: template 900171: 900171: void 900171: __introselect(_RandomAccessIterator __first, _RandomAccessIterator __nth, 900171: _RandomAccessIterator __last, _Size __depth_limit, 900171: _Compare __comp) 900171: { 900171: while (__last - __first > 3) 900171: { 900171: if (__depth_limit == 0) 900171: { 900171: std::__heap_select(__first, __nth + 1, __last, __comp); 900171: 900171: std::iter_swap(__first, __nth); 900171: return; 900171: } 900171: --__depth_limit; 900171: _RandomAccessIterator __cut = 900171: std::__unguarded_partition_pivot(__first, __last, __comp); 900171: if (__cut <= __nth) 900171: __first = __cut; 900171: else 900171: __last = __cut; 900171: } 900171: std::__insertion_sort(__first, __last, __comp); 900171: } 900171: # 1991 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algo.h" 3 900171: template 900171: 900171: inline _ForwardIterator 900171: lower_bound(_ForwardIterator __first, _ForwardIterator __last, 900171: const _Tp& __val, _Compare __comp) 900171: { 900171: 900171: 900171: 900171: 900171: 900171: ; 900171: 900171: return std::__lower_bound(__first, __last, __val, 900171: __gnu_cxx::__ops::__iter_comp_val(__comp)); 900171: } 900171: 900171: template 900171: 900171: _ForwardIterator 900171: __upper_bound(_ForwardIterator __first, _ForwardIterator __last, 900171: const _Tp& __val, _Compare __comp) 900171: { 900171: typedef typename iterator_traits<_ForwardIterator>::difference_type 900171: _DistanceType; 900171: 900171: _DistanceType __len = std::distance(__first, __last); 900171: 900171: while (__len > 0) 900171: { 900171: _DistanceType __half = __len >> 1; 900171: _ForwardIterator __middle = __first; 900171: std::advance(__middle, __half); 900171: if (__comp(__val, __middle)) 900171: __len = __half; 900171: else 900171: { 900171: __first = __middle; 900171: ++__first; 900171: __len = __len - __half - 1; 900171: } 900171: } 900171: return __first; 900171: } 900171: # 2047 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algo.h" 3 900171: template 900171: 900171: inline _ForwardIterator 900171: upper_bound(_ForwardIterator __first, _ForwardIterator __last, 900171: const _Tp& __val) 900171: { 900171: 900171: 900171: 900171: 900171: ; 900171: 900171: return std::__upper_bound(__first, __last, __val, 900171: __gnu_cxx::__ops::__val_less_iter()); 900171: } 900171: # 2078 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algo.h" 3 900171: template 900171: 900171: inline _ForwardIterator 900171: upper_bound(_ForwardIterator __first, _ForwardIterator __last, 900171: const _Tp& __val, _Compare __comp) 900171: { 900171: 900171: 900171: 900171: 900171: 900171: ; 900171: 900171: return std::__upper_bound(__first, __last, __val, 900171: __gnu_cxx::__ops::__val_comp_iter(__comp)); 900171: } 900171: 900171: template 900171: 900171: pair<_ForwardIterator, _ForwardIterator> 900171: __equal_range(_ForwardIterator __first, _ForwardIterator __last, 900171: const _Tp& __val, 900171: _CompareItTp __comp_it_val, _CompareTpIt __comp_val_it) 900171: { 900171: typedef typename iterator_traits<_ForwardIterator>::difference_type 900171: _DistanceType; 900171: 900171: _DistanceType __len = std::distance(__first, __last); 900171: 900171: while (__len > 0) 900171: { 900171: _DistanceType __half = __len >> 1; 900171: _ForwardIterator __middle = __first; 900171: std::advance(__middle, __half); 900171: if (__comp_it_val(__middle, __val)) 900171: { 900171: __first = __middle; 900171: ++__first; 900171: __len = __len - __half - 1; 900171: } 900171: else if (__comp_val_it(__val, __middle)) 900171: __len = __half; 900171: else 900171: { 900171: _ForwardIterator __left 900171: = std::__lower_bound(__first, __middle, __val, __comp_it_val); 900171: std::advance(__first, __len); 900171: _ForwardIterator __right 900171: = std::__upper_bound(++__middle, __first, __val, __comp_val_it); 900171: return pair<_ForwardIterator, _ForwardIterator>(__left, __right); 900171: } 900171: } 900171: return pair<_ForwardIterator, _ForwardIterator>(__first, __first); 900171: } 900171: # 2151 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algo.h" 3 900171: template 900171: 900171: inline pair<_ForwardIterator, _ForwardIterator> 900171: equal_range(_ForwardIterator __first, _ForwardIterator __last, 900171: const _Tp& __val) 900171: { 900171: 900171: 900171: 900171: 900171: 900171: 900171: ; 900171: ; 900171: 900171: return std::__equal_range(__first, __last, __val, 900171: __gnu_cxx::__ops::__iter_less_val(), 900171: __gnu_cxx::__ops::__val_less_iter()); 900171: } 900171: # 2188 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algo.h" 3 900171: template 900171: 900171: inline pair<_ForwardIterator, _ForwardIterator> 900171: equal_range(_ForwardIterator __first, _ForwardIterator __last, 900171: const _Tp& __val, _Compare __comp) 900171: { 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: ; 900171: 900171: ; 900171: 900171: return std::__equal_range(__first, __last, __val, 900171: __gnu_cxx::__ops::__iter_comp_val(__comp), 900171: __gnu_cxx::__ops::__val_comp_iter(__comp)); 900171: } 900171: # 2222 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algo.h" 3 900171: template 900171: 900171: bool 900171: binary_search(_ForwardIterator __first, _ForwardIterator __last, 900171: const _Tp& __val) 900171: { 900171: 900171: 900171: 900171: 900171: ; 900171: ; 900171: 900171: _ForwardIterator __i 900171: = std::__lower_bound(__first, __last, __val, 900171: __gnu_cxx::__ops::__iter_less_val()); 900171: return __i != __last && !(__val < *__i); 900171: } 900171: # 2256 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algo.h" 3 900171: template 900171: 900171: bool 900171: binary_search(_ForwardIterator __first, _ForwardIterator __last, 900171: const _Tp& __val, _Compare __comp) 900171: { 900171: 900171: 900171: 900171: 900171: 900171: ; 900171: 900171: ; 900171: 900171: _ForwardIterator __i 900171: = std::__lower_bound(__first, __last, __val, 900171: __gnu_cxx::__ops::__iter_comp_val(__comp)); 900171: return __i != __last && !bool(__comp(__val, *__i)); 900171: } 900171: 900171: 900171: 900171: 900171: template 900171: void 900171: __move_merge_adaptive(_InputIterator1 __first1, _InputIterator1 __last1, 900171: _InputIterator2 __first2, _InputIterator2 __last2, 900171: _OutputIterator __result, _Compare __comp) 900171: { 900171: while (__first1 != __last1 && __first2 != __last2) 900171: { 900171: if (__comp(__first2, __first1)) 900171: { 900171: *__result = std::move(*__first2); 900171: ++__first2; 900171: } 900171: else 900171: { 900171: *__result = std::move(*__first1); 900171: ++__first1; 900171: } 900171: ++__result; 900171: } 900171: if (__first1 != __last1) 900171: std::move(__first1, __last1, __result); 900171: } 900171: 900171: 900171: template 900171: void 900171: __move_merge_adaptive_backward(_BidirectionalIterator1 __first1, 900171: _BidirectionalIterator1 __last1, 900171: _BidirectionalIterator2 __first2, 900171: _BidirectionalIterator2 __last2, 900171: _BidirectionalIterator3 __result, 900171: _Compare __comp) 900171: { 900171: if (__first1 == __last1) 900171: { 900171: std::move_backward(__first2, __last2, __result); 900171: return; 900171: } 900171: else if (__first2 == __last2) 900171: return; 900171: 900171: --__last1; 900171: --__last2; 900171: while (true) 900171: { 900171: if (__comp(__last2, __last1)) 900171: { 900171: *--__result = std::move(*__last1); 900171: if (__first1 == __last1) 900171: { 900171: std::move_backward(__first2, ++__last2, __result); 900171: return; 900171: } 900171: --__last1; 900171: } 900171: else 900171: { 900171: *--__result = std::move(*__last2); 900171: if (__first2 == __last2) 900171: return; 900171: --__last2; 900171: } 900171: } 900171: } 900171: 900171: 900171: template 900171: _BidirectionalIterator1 900171: __rotate_adaptive(_BidirectionalIterator1 __first, 900171: _BidirectionalIterator1 __middle, 900171: _BidirectionalIterator1 __last, 900171: _Distance __len1, _Distance __len2, 900171: _BidirectionalIterator2 __buffer, 900171: _Distance __buffer_size) 900171: { 900171: _BidirectionalIterator2 __buffer_end; 900171: if (__len1 > __len2 && __len2 <= __buffer_size) 900171: { 900171: if (__len2) 900171: { 900171: __buffer_end = std::move(__middle, __last, __buffer); 900171: std::move_backward(__first, __middle, __last); 900171: return std::move(__buffer, __buffer_end, __first); 900171: } 900171: else 900171: return __first; 900171: } 900171: else if (__len1 <= __buffer_size) 900171: { 900171: if (__len1) 900171: { 900171: __buffer_end = std::move(__first, __middle, __buffer); 900171: std::move(__middle, __last, __first); 900171: return std::move_backward(__buffer, __buffer_end, __last); 900171: } 900171: else 900171: return __last; 900171: } 900171: else 900171: return std::rotate(__first, __middle, __last); 900171: } 900171: 900171: 900171: template 900171: void 900171: __merge_adaptive(_BidirectionalIterator __first, 900171: _BidirectionalIterator __middle, 900171: _BidirectionalIterator __last, 900171: _Distance __len1, _Distance __len2, 900171: _Pointer __buffer, _Distance __buffer_size, 900171: _Compare __comp) 900171: { 900171: if (__len1 <= __len2 && __len1 <= __buffer_size) 900171: { 900171: _Pointer __buffer_end = std::move(__first, __middle, __buffer); 900171: std::__move_merge_adaptive(__buffer, __buffer_end, __middle, __last, 900171: __first, __comp); 900171: } 900171: else if (__len2 <= __buffer_size) 900171: { 900171: _Pointer __buffer_end = std::move(__middle, __last, __buffer); 900171: std::__move_merge_adaptive_backward(__first, __middle, __buffer, 900171: __buffer_end, __last, __comp); 900171: } 900171: else 900171: { 900171: _BidirectionalIterator __first_cut = __first; 900171: _BidirectionalIterator __second_cut = __middle; 900171: _Distance __len11 = 0; 900171: _Distance __len22 = 0; 900171: if (__len1 > __len2) 900171: { 900171: __len11 = __len1 / 2; 900171: std::advance(__first_cut, __len11); 900171: __second_cut 900171: = std::__lower_bound(__middle, __last, *__first_cut, 900171: __gnu_cxx::__ops::__iter_comp_val(__comp)); 900171: __len22 = std::distance(__middle, __second_cut); 900171: } 900171: else 900171: { 900171: __len22 = __len2 / 2; 900171: std::advance(__second_cut, __len22); 900171: __first_cut 900171: = std::__upper_bound(__first, __middle, *__second_cut, 900171: __gnu_cxx::__ops::__val_comp_iter(__comp)); 900171: __len11 = std::distance(__first, __first_cut); 900171: } 900171: 900171: _BidirectionalIterator __new_middle 900171: = std::__rotate_adaptive(__first_cut, __middle, __second_cut, 900171: __len1 - __len11, __len22, __buffer, 900171: __buffer_size); 900171: std::__merge_adaptive(__first, __first_cut, __new_middle, __len11, 900171: __len22, __buffer, __buffer_size, __comp); 900171: std::__merge_adaptive(__new_middle, __second_cut, __last, 900171: __len1 - __len11, 900171: __len2 - __len22, __buffer, 900171: __buffer_size, __comp); 900171: } 900171: } 900171: 900171: 900171: template 900171: void 900171: __merge_without_buffer(_BidirectionalIterator __first, 900171: _BidirectionalIterator __middle, 900171: _BidirectionalIterator __last, 900171: _Distance __len1, _Distance __len2, 900171: _Compare __comp) 900171: { 900171: if (__len1 == 0 || __len2 == 0) 900171: return; 900171: 900171: if (__len1 + __len2 == 2) 900171: { 900171: if (__comp(__middle, __first)) 900171: std::iter_swap(__first, __middle); 900171: return; 900171: } 900171: 900171: _BidirectionalIterator __first_cut = __first; 900171: _BidirectionalIterator __second_cut = __middle; 900171: _Distance __len11 = 0; 900171: _Distance __len22 = 0; 900171: if (__len1 > __len2) 900171: { 900171: __len11 = __len1 / 2; 900171: std::advance(__first_cut, __len11); 900171: __second_cut 900171: = std::__lower_bound(__middle, __last, *__first_cut, 900171: __gnu_cxx::__ops::__iter_comp_val(__comp)); 900171: __len22 = std::distance(__middle, __second_cut); 900171: } 900171: else 900171: { 900171: __len22 = __len2 / 2; 900171: std::advance(__second_cut, __len22); 900171: __first_cut 900171: = std::__upper_bound(__first, __middle, *__second_cut, 900171: __gnu_cxx::__ops::__val_comp_iter(__comp)); 900171: __len11 = std::distance(__first, __first_cut); 900171: } 900171: 900171: _BidirectionalIterator __new_middle 900171: = std::rotate(__first_cut, __middle, __second_cut); 900171: std::__merge_without_buffer(__first, __first_cut, __new_middle, 900171: __len11, __len22, __comp); 900171: std::__merge_without_buffer(__new_middle, __second_cut, __last, 900171: __len1 - __len11, __len2 - __len22, __comp); 900171: } 900171: 900171: template 900171: void 900171: __inplace_merge(_BidirectionalIterator __first, 900171: _BidirectionalIterator __middle, 900171: _BidirectionalIterator __last, 900171: _Compare __comp) 900171: { 900171: typedef typename iterator_traits<_BidirectionalIterator>::value_type 900171: _ValueType; 900171: typedef typename iterator_traits<_BidirectionalIterator>::difference_type 900171: _DistanceType; 900171: typedef _Temporary_buffer<_BidirectionalIterator, _ValueType> _TmpBuf; 900171: 900171: if (__first == __middle || __middle == __last) 900171: return; 900171: 900171: const _DistanceType __len1 = std::distance(__first, __middle); 900171: const _DistanceType __len2 = std::distance(__middle, __last); 900171: 900171: 900171: 900171: _TmpBuf __buf(__first, std::min(__len1, __len2)); 900171: 900171: if (__buf.begin() == 0) 900171: std::__merge_without_buffer 900171: (__first, __middle, __last, __len1, __len2, __comp); 900171: else 900171: std::__merge_adaptive 900171: (__first, __middle, __last, __len1, __len2, __buf.begin(), 900171: _DistanceType(__buf.size()), __comp); 900171: } 900171: # 2548 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algo.h" 3 900171: template 900171: inline void 900171: inplace_merge(_BidirectionalIterator __first, 900171: _BidirectionalIterator __middle, 900171: _BidirectionalIterator __last) 900171: { 900171: 900171: 900171: 900171: 900171: 900171: ; 900171: ; 900171: ; 900171: 900171: std::__inplace_merge(__first, __middle, __last, 900171: __gnu_cxx::__ops::__iter_less_iter()); 900171: } 900171: # 2589 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algo.h" 3 900171: template 900171: inline void 900171: inplace_merge(_BidirectionalIterator __first, 900171: _BidirectionalIterator __middle, 900171: _BidirectionalIterator __last, 900171: _Compare __comp) 900171: { 900171: 900171: 900171: 900171: 900171: 900171: 900171: ; 900171: ; 900171: ; 900171: 900171: std::__inplace_merge(__first, __middle, __last, 900171: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 900171: } 900171: 900171: 900171: 900171: template 900171: _OutputIterator 900171: __move_merge(_InputIterator __first1, _InputIterator __last1, 900171: _InputIterator __first2, _InputIterator __last2, 900171: _OutputIterator __result, _Compare __comp) 900171: { 900171: while (__first1 != __last1 && __first2 != __last2) 900171: { 900171: if (__comp(__first2, __first1)) 900171: { 900171: *__result = std::move(*__first2); 900171: ++__first2; 900171: } 900171: else 900171: { 900171: *__result = std::move(*__first1); 900171: ++__first1; 900171: } 900171: ++__result; 900171: } 900171: return std::move(__first2, __last2, std::move(__first1, __last1, __result)) 900171: 900171: ; 900171: } 900171: 900171: template 900171: void 900171: __merge_sort_loop(_RandomAccessIterator1 __first, 900171: _RandomAccessIterator1 __last, 900171: _RandomAccessIterator2 __result, _Distance __step_size, 900171: _Compare __comp) 900171: { 900171: const _Distance __two_step = 2 * __step_size; 900171: 900171: while (__last - __first >= __two_step) 900171: { 900171: __result = std::__move_merge(__first, __first + __step_size, 900171: __first + __step_size, 900171: __first + __two_step, 900171: __result, __comp); 900171: __first += __two_step; 900171: } 900171: __step_size = std::min(_Distance(__last - __first), __step_size); 900171: 900171: std::__move_merge(__first, __first + __step_size, 900171: __first + __step_size, __last, __result, __comp); 900171: } 900171: 900171: template 900171: 900171: void 900171: __chunk_insertion_sort(_RandomAccessIterator __first, 900171: _RandomAccessIterator __last, 900171: _Distance __chunk_size, _Compare __comp) 900171: { 900171: while (__last - __first >= __chunk_size) 900171: { 900171: std::__insertion_sort(__first, __first + __chunk_size, __comp); 900171: __first += __chunk_size; 900171: } 900171: std::__insertion_sort(__first, __last, __comp); 900171: } 900171: 900171: enum { _S_chunk_size = 7 }; 900171: 900171: template 900171: void 900171: __merge_sort_with_buffer(_RandomAccessIterator __first, 900171: _RandomAccessIterator __last, 900171: _Pointer __buffer, _Compare __comp) 900171: { 900171: typedef typename iterator_traits<_RandomAccessIterator>::difference_type 900171: _Distance; 900171: 900171: const _Distance __len = __last - __first; 900171: const _Pointer __buffer_last = __buffer + __len; 900171: 900171: _Distance __step_size = _S_chunk_size; 900171: std::__chunk_insertion_sort(__first, __last, __step_size, __comp); 900171: 900171: while (__step_size < __len) 900171: { 900171: std::__merge_sort_loop(__first, __last, __buffer, 900171: __step_size, __comp); 900171: __step_size *= 2; 900171: std::__merge_sort_loop(__buffer, __buffer_last, __first, 900171: __step_size, __comp); 900171: __step_size *= 2; 900171: } 900171: } 900171: 900171: template 900171: void 900171: __stable_sort_adaptive(_RandomAccessIterator __first, 900171: _RandomAccessIterator __last, 900171: _Pointer __buffer, _Distance __buffer_size, 900171: _Compare __comp) 900171: { 900171: const _Distance __len = (__last - __first + 1) / 2; 900171: const _RandomAccessIterator __middle = __first + __len; 900171: if (__len > __buffer_size) 900171: { 900171: std::__stable_sort_adaptive(__first, __middle, __buffer, 900171: __buffer_size, __comp); 900171: std::__stable_sort_adaptive(__middle, __last, __buffer, 900171: __buffer_size, __comp); 900171: } 900171: else 900171: { 900171: std::__merge_sort_with_buffer(__first, __middle, __buffer, __comp); 900171: std::__merge_sort_with_buffer(__middle, __last, __buffer, __comp); 900171: } 900171: 900171: std::__merge_adaptive(__first, __middle, __last, 900171: _Distance(__middle - __first), 900171: _Distance(__last - __middle), 900171: __buffer, __buffer_size, 900171: __comp); 900171: } 900171: 900171: 900171: template 900171: void 900171: __inplace_stable_sort(_RandomAccessIterator __first, 900171: _RandomAccessIterator __last, _Compare __comp) 900171: { 900171: if (__last - __first < 15) 900171: { 900171: std::__insertion_sort(__first, __last, __comp); 900171: return; 900171: } 900171: _RandomAccessIterator __middle = __first + (__last - __first) / 2; 900171: std::__inplace_stable_sort(__first, __middle, __comp); 900171: std::__inplace_stable_sort(__middle, __last, __comp); 900171: std::__merge_without_buffer(__first, __middle, __last, 900171: __middle - __first, 900171: __last - __middle, 900171: __comp); 900171: } 900171: # 2763 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algo.h" 3 900171: template 900171: 900171: bool 900171: __includes(_InputIterator1 __first1, _InputIterator1 __last1, 900171: _InputIterator2 __first2, _InputIterator2 __last2, 900171: _Compare __comp) 900171: { 900171: while (__first1 != __last1 && __first2 != __last2) 900171: { 900171: if (__comp(__first2, __first1)) 900171: return false; 900171: if (!__comp(__first1, __first2)) 900171: ++__first2; 900171: ++__first1; 900171: } 900171: 900171: return __first2 == __last2; 900171: } 900171: # 2801 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algo.h" 3 900171: template 900171: 900171: inline bool 900171: includes(_InputIterator1 __first1, _InputIterator1 __last1, 900171: _InputIterator2 __first2, _InputIterator2 __last2) 900171: { 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: ; 900171: ; 900171: ; 900171: ; 900171: 900171: return std::__includes(__first1, __last1, __first2, __last2, 900171: __gnu_cxx::__ops::__iter_less_iter()); 900171: } 900171: # 2846 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algo.h" 3 900171: template 900171: 900171: inline bool 900171: includes(_InputIterator1 __first1, _InputIterator1 __last1, 900171: _InputIterator2 __first2, _InputIterator2 __last2, 900171: _Compare __comp) 900171: { 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: ; 900171: ; 900171: ; 900171: ; 900171: 900171: return std::__includes(__first1, __last1, __first2, __last2, 900171: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 900171: } 900171: # 2882 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algo.h" 3 900171: template 900171: 900171: bool 900171: __next_permutation(_BidirectionalIterator __first, 900171: _BidirectionalIterator __last, _Compare __comp) 900171: { 900171: if (__first == __last) 900171: return false; 900171: _BidirectionalIterator __i = __first; 900171: ++__i; 900171: if (__i == __last) 900171: return false; 900171: __i = __last; 900171: --__i; 900171: 900171: for(;;) 900171: { 900171: _BidirectionalIterator __ii = __i; 900171: --__i; 900171: if (__comp(__i, __ii)) 900171: { 900171: _BidirectionalIterator __j = __last; 900171: while (!__comp(__i, --__j)) 900171: {} 900171: std::iter_swap(__i, __j); 900171: std::__reverse(__ii, __last, 900171: std::__iterator_category(__first)); 900171: return true; 900171: } 900171: if (__i == __first) 900171: { 900171: std::__reverse(__first, __last, 900171: std::__iterator_category(__first)); 900171: return false; 900171: } 900171: } 900171: } 900171: # 2932 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algo.h" 3 900171: template 900171: 900171: inline bool 900171: next_permutation(_BidirectionalIterator __first, 900171: _BidirectionalIterator __last) 900171: { 900171: 900171: 900171: 900171: 900171: 900171: ; 900171: ; 900171: 900171: return std::__next_permutation 900171: (__first, __last, __gnu_cxx::__ops::__iter_less_iter()); 900171: } 900171: # 2965 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algo.h" 3 900171: template 900171: 900171: inline bool 900171: next_permutation(_BidirectionalIterator __first, 900171: _BidirectionalIterator __last, _Compare __comp) 900171: { 900171: 900171: 900171: 900171: 900171: 900171: 900171: ; 900171: ; 900171: 900171: return std::__next_permutation 900171: (__first, __last, __gnu_cxx::__ops::__iter_comp_iter(__comp)); 900171: } 900171: 900171: template 900171: 900171: bool 900171: __prev_permutation(_BidirectionalIterator __first, 900171: _BidirectionalIterator __last, _Compare __comp) 900171: { 900171: if (__first == __last) 900171: return false; 900171: _BidirectionalIterator __i = __first; 900171: ++__i; 900171: if (__i == __last) 900171: return false; 900171: __i = __last; 900171: --__i; 900171: 900171: for(;;) 900171: { 900171: _BidirectionalIterator __ii = __i; 900171: --__i; 900171: if (__comp(__ii, __i)) 900171: { 900171: _BidirectionalIterator __j = __last; 900171: while (!__comp(--__j, __i)) 900171: {} 900171: std::iter_swap(__i, __j); 900171: std::__reverse(__ii, __last, 900171: std::__iterator_category(__first)); 900171: return true; 900171: } 900171: if (__i == __first) 900171: { 900171: std::__reverse(__first, __last, 900171: std::__iterator_category(__first)); 900171: return false; 900171: } 900171: } 900171: } 900171: # 3035 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algo.h" 3 900171: template 900171: 900171: inline bool 900171: prev_permutation(_BidirectionalIterator __first, 900171: _BidirectionalIterator __last) 900171: { 900171: 900171: 900171: 900171: 900171: 900171: ; 900171: ; 900171: 900171: return std::__prev_permutation(__first, __last, 900171: __gnu_cxx::__ops::__iter_less_iter()); 900171: } 900171: # 3068 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algo.h" 3 900171: template 900171: 900171: inline bool 900171: prev_permutation(_BidirectionalIterator __first, 900171: _BidirectionalIterator __last, _Compare __comp) 900171: { 900171: 900171: 900171: 900171: 900171: 900171: 900171: ; 900171: ; 900171: 900171: return std::__prev_permutation(__first, __last, 900171: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 900171: } 900171: 900171: 900171: 900171: 900171: template 900171: 900171: _OutputIterator 900171: __replace_copy_if(_InputIterator __first, _InputIterator __last, 900171: _OutputIterator __result, 900171: _Predicate __pred, const _Tp& __new_value) 900171: { 900171: for (; __first != __last; ++__first, (void)++__result) 900171: if (__pred(__first)) 900171: *__result = __new_value; 900171: else 900171: *__result = *__first; 900171: return __result; 900171: } 900171: # 3120 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algo.h" 3 900171: template 900171: 900171: inline _OutputIterator 900171: replace_copy(_InputIterator __first, _InputIterator __last, 900171: _OutputIterator __result, 900171: const _Tp& __old_value, const _Tp& __new_value) 900171: { 900171: 900171: 900171: 900171: 900171: 900171: 900171: ; 900171: 900171: return std::__replace_copy_if(__first, __last, __result, 900171: __gnu_cxx::__ops::__iter_equals_val(__old_value), 900171: __new_value); 900171: } 900171: # 3155 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algo.h" 3 900171: template 900171: 900171: inline _OutputIterator 900171: replace_copy_if(_InputIterator __first, _InputIterator __last, 900171: _OutputIterator __result, 900171: _Predicate __pred, const _Tp& __new_value) 900171: { 900171: 900171: 900171: 900171: 900171: 900171: 900171: ; 900171: 900171: return std::__replace_copy_if(__first, __last, __result, 900171: __gnu_cxx::__ops::__pred_iter(__pred), 900171: __new_value); 900171: } 900171: # 3184 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algo.h" 3 900171: template 900171: 900171: inline bool 900171: is_sorted(_ForwardIterator __first, _ForwardIterator __last) 900171: { return std::is_sorted_until(__first, __last) == __last; } 900171: # 3199 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algo.h" 3 900171: template 900171: 900171: inline bool 900171: is_sorted(_ForwardIterator __first, _ForwardIterator __last, 900171: _Compare __comp) 900171: { return std::is_sorted_until(__first, __last, __comp) == __last; } 900171: 900171: template 900171: 900171: _ForwardIterator 900171: __is_sorted_until(_ForwardIterator __first, _ForwardIterator __last, 900171: _Compare __comp) 900171: { 900171: if (__first == __last) 900171: return __last; 900171: 900171: _ForwardIterator __next = __first; 900171: for (++__next; __next != __last; __first = __next, (void)++__next) 900171: if (__comp(__next, __first)) 900171: return __next; 900171: return __next; 900171: } 900171: # 3230 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algo.h" 3 900171: template 900171: 900171: inline _ForwardIterator 900171: is_sorted_until(_ForwardIterator __first, _ForwardIterator __last) 900171: { 900171: 900171: 900171: 900171: 900171: ; 900171: ; 900171: 900171: return std::__is_sorted_until(__first, __last, 900171: __gnu_cxx::__ops::__iter_less_iter()); 900171: } 900171: # 3255 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algo.h" 3 900171: template 900171: 900171: inline _ForwardIterator 900171: is_sorted_until(_ForwardIterator __first, _ForwardIterator __last, 900171: _Compare __comp) 900171: { 900171: 900171: 900171: 900171: 900171: 900171: ; 900171: ; 900171: 900171: return std::__is_sorted_until(__first, __last, 900171: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 900171: } 900171: # 3281 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algo.h" 3 900171: template 900171: 900171: inline pair 900171: minmax(const _Tp& __a, const _Tp& __b) 900171: { 900171: 900171: 900171: 900171: return __b < __a ? pair(__b, __a) 900171: : pair(__a, __b); 900171: } 900171: # 3302 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algo.h" 3 900171: template 900171: 900171: inline pair 900171: minmax(const _Tp& __a, const _Tp& __b, _Compare __comp) 900171: { 900171: return __comp(__b, __a) ? pair(__b, __a) 900171: : pair(__a, __b); 900171: } 900171: 900171: template 900171: 900171: pair<_ForwardIterator, _ForwardIterator> 900171: __minmax_element(_ForwardIterator __first, _ForwardIterator __last, 900171: _Compare __comp) 900171: { 900171: _ForwardIterator __next = __first; 900171: if (__first == __last 900171: || ++__next == __last) 900171: return std::make_pair(__first, __first); 900171: 900171: _ForwardIterator __min{}, __max{}; 900171: if (__comp(__next, __first)) 900171: { 900171: __min = __next; 900171: __max = __first; 900171: } 900171: else 900171: { 900171: __min = __first; 900171: __max = __next; 900171: } 900171: 900171: __first = __next; 900171: ++__first; 900171: 900171: while (__first != __last) 900171: { 900171: __next = __first; 900171: if (++__next == __last) 900171: { 900171: if (__comp(__first, __min)) 900171: __min = __first; 900171: else if (!__comp(__first, __max)) 900171: __max = __first; 900171: break; 900171: } 900171: 900171: if (__comp(__next, __first)) 900171: { 900171: if (__comp(__next, __min)) 900171: __min = __next; 900171: if (!__comp(__first, __max)) 900171: __max = __first; 900171: } 900171: else 900171: { 900171: if (__comp(__first, __min)) 900171: __min = __first; 900171: if (!__comp(__next, __max)) 900171: __max = __next; 900171: } 900171: 900171: __first = __next; 900171: ++__first; 900171: } 900171: 900171: return std::make_pair(__min, __max); 900171: } 900171: # 3382 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algo.h" 3 900171: template 900171: 900171: inline pair<_ForwardIterator, _ForwardIterator> 900171: minmax_element(_ForwardIterator __first, _ForwardIterator __last) 900171: { 900171: 900171: 900171: 900171: 900171: ; 900171: ; 900171: 900171: return std::__minmax_element(__first, __last, 900171: __gnu_cxx::__ops::__iter_less_iter()); 900171: } 900171: # 3410 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algo.h" 3 900171: template 900171: 900171: inline pair<_ForwardIterator, _ForwardIterator> 900171: minmax_element(_ForwardIterator __first, _ForwardIterator __last, 900171: _Compare __comp) 900171: { 900171: 900171: 900171: 900171: 900171: 900171: ; 900171: ; 900171: 900171: return std::__minmax_element(__first, __last, 900171: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 900171: } 900171: 900171: template 900171: 900171: inline pair<_Tp, _Tp> 900171: minmax(initializer_list<_Tp> __l) 900171: { 900171: ; 900171: pair __p = 900171: std::__minmax_element(__l.begin(), __l.end(), 900171: __gnu_cxx::__ops::__iter_less_iter()); 900171: return std::make_pair(*__p.first, *__p.second); 900171: } 900171: 900171: template 900171: 900171: inline pair<_Tp, _Tp> 900171: minmax(initializer_list<_Tp> __l, _Compare __comp) 900171: { 900171: ; 900171: pair __p = 900171: std::__minmax_element(__l.begin(), __l.end(), 900171: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 900171: return std::make_pair(*__p.first, *__p.second); 900171: } 900171: # 3466 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algo.h" 3 900171: template 900171: 900171: inline bool 900171: is_permutation(_ForwardIterator1 __first1, _ForwardIterator1 __last1, 900171: _ForwardIterator2 __first2, _BinaryPredicate __pred) 900171: { 900171: 900171: 900171: 900171: 900171: 900171: 900171: ; 900171: 900171: return std::__is_permutation(__first1, __last1, __first2, 900171: __gnu_cxx::__ops::__iter_comp_iter(__pred)); 900171: } 900171: # 3671 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algo.h" 3 900171: template 900171: pair<_IntType, _IntType> 900171: __gen_two_uniform_ints(_IntType __b0, _IntType __b1, 900171: _UniformRandomBitGenerator&& __g) 900171: { 900171: _IntType __x 900171: = uniform_int_distribution<_IntType>{0, (__b0 * __b1) - 1}(__g); 900171: return std::make_pair(__x / __b1, __x % __b1); 900171: } 900171: # 3693 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algo.h" 3 900171: template 900171: void 900171: shuffle(_RandomAccessIterator __first, _RandomAccessIterator __last, 900171: _UniformRandomNumberGenerator&& __g) 900171: { 900171: 900171: 900171: 900171: ; 900171: 900171: if (__first == __last) 900171: return; 900171: 900171: typedef typename iterator_traits<_RandomAccessIterator>::difference_type 900171: _DistanceType; 900171: 900171: typedef typename std::make_unsigned<_DistanceType>::type __ud_type; 900171: typedef typename std::uniform_int_distribution<__ud_type> __distr_type; 900171: typedef typename __distr_type::param_type __p_type; 900171: 900171: typedef typename remove_reference<_UniformRandomNumberGenerator>::type 900171: _Gen; 900171: typedef typename common_type::type 900171: __uc_type; 900171: 900171: const __uc_type __urngrange = __g.max() - __g.min(); 900171: const __uc_type __urange = __uc_type(__last - __first); 900171: 900171: if (__urngrange / __urange >= __urange) 900171: 900171: { 900171: _RandomAccessIterator __i = __first + 1; 900171: 900171: 900171: 900171: 900171: 900171: if ((__urange % 2) == 0) 900171: { 900171: __distr_type __d{0, 1}; 900171: std::iter_swap(__i++, __first + __d(__g)); 900171: } 900171: 900171: 900171: 900171: 900171: 900171: while (__i != __last) 900171: { 900171: const __uc_type __swap_range = __uc_type(__i - __first) + 1; 900171: 900171: const pair<__uc_type, __uc_type> __pospos = 900171: __gen_two_uniform_ints(__swap_range, __swap_range + 1, __g); 900171: 900171: std::iter_swap(__i++, __first + __pospos.first); 900171: std::iter_swap(__i++, __first + __pospos.second); 900171: } 900171: 900171: return; 900171: } 900171: 900171: __distr_type __d; 900171: 900171: for (_RandomAccessIterator __i = __first + 1; __i != __last; ++__i) 900171: std::iter_swap(__i, __first + __d(__g, __p_type(0, __i - __first))); 900171: } 900171: 900171: 900171: 900171: 900171: 900171: # 3778 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algo.h" 3 900171: template 900171: 900171: _Function 900171: for_each(_InputIterator __first, _InputIterator __last, _Function __f) 900171: { 900171: 900171: 900171: ; 900171: for (; __first != __last; ++__first) 900171: __f(*__first); 900171: return __f; 900171: } 900171: # 3840 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algo.h" 3 900171: template 900171: 900171: inline _InputIterator 900171: find(_InputIterator __first, _InputIterator __last, 900171: const _Tp& __val) 900171: { 900171: 900171: 900171: 900171: 900171: ; 900171: return std::__find_if(__first, __last, 900171: __gnu_cxx::__ops::__iter_equals_val(__val)); 900171: } 900171: # 3865 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algo.h" 3 900171: template 900171: 900171: inline _InputIterator 900171: find_if(_InputIterator __first, _InputIterator __last, 900171: _Predicate __pred) 900171: { 900171: 900171: 900171: 900171: 900171: ; 900171: 900171: return std::__find_if(__first, __last, 900171: __gnu_cxx::__ops::__pred_iter(__pred)); 900171: } 900171: # 3897 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algo.h" 3 900171: template 900171: 900171: _InputIterator 900171: find_first_of(_InputIterator __first1, _InputIterator __last1, 900171: _ForwardIterator __first2, _ForwardIterator __last2) 900171: { 900171: 900171: 900171: 900171: 900171: 900171: 900171: ; 900171: ; 900171: 900171: for (; __first1 != __last1; ++__first1) 900171: for (_ForwardIterator __iter = __first2; __iter != __last2; ++__iter) 900171: if (*__first1 == *__iter) 900171: return __first1; 900171: return __last1; 900171: } 900171: # 3938 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algo.h" 3 900171: template 900171: 900171: _InputIterator 900171: find_first_of(_InputIterator __first1, _InputIterator __last1, 900171: _ForwardIterator __first2, _ForwardIterator __last2, 900171: _BinaryPredicate __comp) 900171: { 900171: 900171: 900171: 900171: 900171: 900171: 900171: ; 900171: ; 900171: 900171: for (; __first1 != __last1; ++__first1) 900171: for (_ForwardIterator __iter = __first2; __iter != __last2; ++__iter) 900171: if (__comp(*__first1, *__iter)) 900171: return __first1; 900171: return __last1; 900171: } 900171: # 3971 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algo.h" 3 900171: template 900171: 900171: inline _ForwardIterator 900171: adjacent_find(_ForwardIterator __first, _ForwardIterator __last) 900171: { 900171: 900171: 900171: 900171: 900171: ; 900171: 900171: return std::__adjacent_find(__first, __last, 900171: __gnu_cxx::__ops::__iter_equal_to_iter()); 900171: } 900171: # 3997 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algo.h" 3 900171: template 900171: 900171: inline _ForwardIterator 900171: adjacent_find(_ForwardIterator __first, _ForwardIterator __last, 900171: _BinaryPredicate __binary_pred) 900171: { 900171: 900171: 900171: 900171: 900171: 900171: ; 900171: 900171: return std::__adjacent_find(__first, __last, 900171: __gnu_cxx::__ops::__iter_comp_iter(__binary_pred)); 900171: } 900171: # 4023 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algo.h" 3 900171: template 900171: 900171: inline typename iterator_traits<_InputIterator>::difference_type 900171: count(_InputIterator __first, _InputIterator __last, const _Tp& __value) 900171: { 900171: 900171: 900171: 900171: 900171: ; 900171: 900171: return std::__count_if(__first, __last, 900171: __gnu_cxx::__ops::__iter_equals_val(__value)); 900171: } 900171: # 4047 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algo.h" 3 900171: template 900171: 900171: inline typename iterator_traits<_InputIterator>::difference_type 900171: count_if(_InputIterator __first, _InputIterator __last, _Predicate __pred) 900171: { 900171: 900171: 900171: 900171: 900171: ; 900171: 900171: return std::__count_if(__first, __last, 900171: __gnu_cxx::__ops::__pred_iter(__pred)); 900171: } 900171: # 4088 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algo.h" 3 900171: template 900171: 900171: inline _ForwardIterator1 900171: search(_ForwardIterator1 __first1, _ForwardIterator1 __last1, 900171: _ForwardIterator2 __first2, _ForwardIterator2 __last2) 900171: { 900171: 900171: 900171: 900171: 900171: 900171: 900171: ; 900171: ; 900171: 900171: return std::__search(__first1, __last1, __first2, __last2, 900171: __gnu_cxx::__ops::__iter_equal_to_iter()); 900171: } 900171: # 4128 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algo.h" 3 900171: template 900171: 900171: inline _ForwardIterator1 900171: search(_ForwardIterator1 __first1, _ForwardIterator1 __last1, 900171: _ForwardIterator2 __first2, _ForwardIterator2 __last2, 900171: _BinaryPredicate __predicate) 900171: { 900171: 900171: 900171: 900171: 900171: 900171: 900171: ; 900171: ; 900171: 900171: return std::__search(__first1, __last1, __first2, __last2, 900171: __gnu_cxx::__ops::__iter_comp_iter(__predicate)); 900171: } 900171: # 4164 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algo.h" 3 900171: template 900171: 900171: inline _ForwardIterator 900171: search_n(_ForwardIterator __first, _ForwardIterator __last, 900171: _Integer __count, const _Tp& __val) 900171: { 900171: 900171: 900171: 900171: 900171: ; 900171: 900171: return std::__search_n(__first, __last, __count, 900171: __gnu_cxx::__ops::__iter_equals_val(__val)); 900171: } 900171: # 4198 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algo.h" 3 900171: template 900171: 900171: inline _ForwardIterator 900171: search_n(_ForwardIterator __first, _ForwardIterator __last, 900171: _Integer __count, const _Tp& __val, 900171: _BinaryPredicate __binary_pred) 900171: { 900171: 900171: 900171: 900171: 900171: ; 900171: 900171: return std::__search_n(__first, __last, __count, 900171: __gnu_cxx::__ops::__iter_comp_val(__binary_pred, __val)); 900171: } 900171: # 4248 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algo.h" 3 900171: template 900171: 900171: _OutputIterator 900171: transform(_InputIterator __first, _InputIterator __last, 900171: _OutputIterator __result, _UnaryOperation __unary_op) 900171: { 900171: 900171: 900171: 900171: 900171: 900171: ; 900171: 900171: for (; __first != __last; ++__first, (void)++__result) 900171: *__result = __unary_op(*__first); 900171: return __result; 900171: } 900171: # 4286 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algo.h" 3 900171: template 900171: 900171: _OutputIterator 900171: transform(_InputIterator1 __first1, _InputIterator1 __last1, 900171: _InputIterator2 __first2, _OutputIterator __result, 900171: _BinaryOperation __binary_op) 900171: { 900171: 900171: 900171: 900171: 900171: 900171: 900171: ; 900171: 900171: for (; __first1 != __last1; ++__first1, (void)++__first2, ++__result) 900171: *__result = __binary_op(*__first1, *__first2); 900171: return __result; 900171: } 900171: # 4320 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algo.h" 3 900171: template 900171: 900171: void 900171: replace(_ForwardIterator __first, _ForwardIterator __last, 900171: const _Tp& __old_value, const _Tp& __new_value) 900171: { 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: ; 900171: 900171: for (; __first != __last; ++__first) 900171: if (*__first == __old_value) 900171: *__first = __new_value; 900171: } 900171: # 4353 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algo.h" 3 900171: template 900171: 900171: void 900171: replace_if(_ForwardIterator __first, _ForwardIterator __last, 900171: _Predicate __pred, const _Tp& __new_value) 900171: { 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: ; 900171: 900171: for (; __first != __last; ++__first) 900171: if (__pred(*__first)) 900171: *__first = __new_value; 900171: } 900171: # 4386 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algo.h" 3 900171: template 900171: 900171: void 900171: generate(_ForwardIterator __first, _ForwardIterator __last, 900171: _Generator __gen) 900171: { 900171: 900171: 900171: 900171: 900171: ; 900171: 900171: for (; __first != __last; ++__first) 900171: *__first = __gen(); 900171: } 900171: # 4420 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algo.h" 3 900171: template 900171: 900171: _OutputIterator 900171: generate_n(_OutputIterator __first, _Size __n, _Generator __gen) 900171: { 900171: 900171: 900171: 900171: 900171: 900171: typedef __decltype(std::__size_to_integer(__n)) _IntSize; 900171: for (_IntSize __niter = std::__size_to_integer(__n); 900171: __niter > 0; --__niter, (void) ++__first) 900171: *__first = __gen(); 900171: return __first; 900171: } 900171: # 4458 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algo.h" 3 900171: template 900171: 900171: inline _OutputIterator 900171: unique_copy(_InputIterator __first, _InputIterator __last, 900171: _OutputIterator __result) 900171: { 900171: 900171: 900171: 900171: 900171: 900171: 900171: ; 900171: 900171: if (__first == __last) 900171: return __result; 900171: return std::__unique_copy(__first, __last, __result, 900171: __gnu_cxx::__ops::__iter_equal_to_iter(), 900171: std::__iterator_category(__first), 900171: std::__iterator_category(__result)); 900171: } 900171: # 4499 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algo.h" 3 900171: template 900171: 900171: inline _OutputIterator 900171: unique_copy(_InputIterator __first, _InputIterator __last, 900171: _OutputIterator __result, 900171: _BinaryPredicate __binary_pred) 900171: { 900171: 900171: 900171: 900171: 900171: ; 900171: 900171: if (__first == __last) 900171: return __result; 900171: return std::__unique_copy(__first, __last, __result, 900171: __gnu_cxx::__ops::__iter_comp_iter(__binary_pred), 900171: std::__iterator_category(__first), 900171: std::__iterator_category(__result)); 900171: } 900171: # 4538 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algo.h" 3 900171: template 900171: 900171: inline void 900171: random_shuffle(_RandomAccessIterator __first, _RandomAccessIterator __last) 900171: { 900171: 900171: 900171: 900171: ; 900171: 900171: if (__first != __last) 900171: for (_RandomAccessIterator __i = __first + 1; __i != __last; ++__i) 900171: { 900171: 900171: _RandomAccessIterator __j = __first 900171: + std::rand() % ((__i - __first) + 1); 900171: if (__i != __j) 900171: std::iter_swap(__i, __j); 900171: } 900171: } 900171: # 4578 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algo.h" 3 900171: template 900171: 900171: void 900171: random_shuffle(_RandomAccessIterator __first, _RandomAccessIterator __last, 900171: 900171: _RandomNumberGenerator&& __rand) 900171: 900171: 900171: 900171: { 900171: 900171: 900171: 900171: ; 900171: 900171: if (__first == __last) 900171: return; 900171: for (_RandomAccessIterator __i = __first + 1; __i != __last; ++__i) 900171: { 900171: _RandomAccessIterator __j = __first + __rand((__i - __first) + 1); 900171: if (__i != __j) 900171: std::iter_swap(__i, __j); 900171: } 900171: } 900171: # 4619 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algo.h" 3 900171: template 900171: 900171: inline _ForwardIterator 900171: partition(_ForwardIterator __first, _ForwardIterator __last, 900171: _Predicate __pred) 900171: { 900171: 900171: 900171: 900171: 900171: 900171: ; 900171: 900171: return std::__partition(__first, __last, __pred, 900171: std::__iterator_category(__first)); 900171: } 900171: # 4653 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algo.h" 3 900171: template 900171: 900171: inline void 900171: partial_sort(_RandomAccessIterator __first, 900171: _RandomAccessIterator __middle, 900171: _RandomAccessIterator __last) 900171: { 900171: 900171: 900171: 900171: 900171: 900171: ; 900171: ; 900171: ; 900171: 900171: std::__partial_sort(__first, __middle, __last, 900171: __gnu_cxx::__ops::__iter_less_iter()); 900171: } 900171: # 4692 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algo.h" 3 900171: template 900171: 900171: inline void 900171: partial_sort(_RandomAccessIterator __first, 900171: _RandomAccessIterator __middle, 900171: _RandomAccessIterator __last, 900171: _Compare __comp) 900171: { 900171: 900171: 900171: 900171: 900171: 900171: 900171: ; 900171: ; 900171: ; 900171: 900171: std::__partial_sort(__first, __middle, __last, 900171: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 900171: } 900171: # 4729 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algo.h" 3 900171: template 900171: 900171: inline void 900171: nth_element(_RandomAccessIterator __first, _RandomAccessIterator __nth, 900171: _RandomAccessIterator __last) 900171: { 900171: 900171: 900171: 900171: 900171: 900171: ; 900171: ; 900171: ; 900171: 900171: if (__first == __last || __nth == __last) 900171: return; 900171: 900171: std::__introselect(__first, __nth, __last, 900171: std::__lg(__last - __first) * 2, 900171: __gnu_cxx::__ops::__iter_less_iter()); 900171: } 900171: # 4769 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algo.h" 3 900171: template 900171: 900171: inline void 900171: nth_element(_RandomAccessIterator __first, _RandomAccessIterator __nth, 900171: _RandomAccessIterator __last, _Compare __comp) 900171: { 900171: 900171: 900171: 900171: 900171: 900171: 900171: ; 900171: ; 900171: ; 900171: 900171: if (__first == __last || __nth == __last) 900171: return; 900171: 900171: std::__introselect(__first, __nth, __last, 900171: std::__lg(__last - __first) * 2, 900171: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 900171: } 900171: # 4807 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algo.h" 3 900171: template 900171: 900171: inline void 900171: sort(_RandomAccessIterator __first, _RandomAccessIterator __last) 900171: { 900171: 900171: 900171: 900171: 900171: 900171: ; 900171: ; 900171: 900171: std::__sort(__first, __last, __gnu_cxx::__ops::__iter_less_iter()); 900171: } 900171: # 4838 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algo.h" 3 900171: template 900171: 900171: inline void 900171: sort(_RandomAccessIterator __first, _RandomAccessIterator __last, 900171: _Compare __comp) 900171: { 900171: 900171: 900171: 900171: 900171: 900171: 900171: ; 900171: ; 900171: 900171: std::__sort(__first, __last, __gnu_cxx::__ops::__iter_comp_iter(__comp)); 900171: } 900171: 900171: template 900171: 900171: _OutputIterator 900171: __merge(_InputIterator1 __first1, _InputIterator1 __last1, 900171: _InputIterator2 __first2, _InputIterator2 __last2, 900171: _OutputIterator __result, _Compare __comp) 900171: { 900171: while (__first1 != __last1 && __first2 != __last2) 900171: { 900171: if (__comp(__first2, __first1)) 900171: { 900171: *__result = *__first2; 900171: ++__first2; 900171: } 900171: else 900171: { 900171: *__result = *__first1; 900171: ++__first1; 900171: } 900171: ++__result; 900171: } 900171: return std::copy(__first2, __last2, 900171: std::copy(__first1, __last1, __result)); 900171: } 900171: # 4901 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algo.h" 3 900171: template 900171: 900171: inline _OutputIterator 900171: merge(_InputIterator1 __first1, _InputIterator1 __last1, 900171: _InputIterator2 __first2, _InputIterator2 __last2, 900171: _OutputIterator __result) 900171: { 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: ; 900171: ; 900171: ; 900171: ; 900171: 900171: return std::__merge(__first1, __last1, 900171: __first2, __last2, __result, 900171: __gnu_cxx::__ops::__iter_less_iter()); 900171: } 900171: # 4952 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algo.h" 3 900171: template 900171: 900171: inline _OutputIterator 900171: merge(_InputIterator1 __first1, _InputIterator1 __last1, 900171: _InputIterator2 __first2, _InputIterator2 __last2, 900171: _OutputIterator __result, _Compare __comp) 900171: { 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: ; 900171: ; 900171: ; 900171: ; 900171: 900171: return std::__merge(__first1, __last1, 900171: __first2, __last2, __result, 900171: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 900171: } 900171: 900171: template 900171: inline void 900171: __stable_sort(_RandomAccessIterator __first, _RandomAccessIterator __last, 900171: _Compare __comp) 900171: { 900171: typedef typename iterator_traits<_RandomAccessIterator>::value_type 900171: _ValueType; 900171: typedef typename iterator_traits<_RandomAccessIterator>::difference_type 900171: _DistanceType; 900171: typedef _Temporary_buffer<_RandomAccessIterator, _ValueType> _TmpBuf; 900171: 900171: if (__first == __last) 900171: return; 900171: 900171: 900171: 900171: _TmpBuf __buf(__first, (__last - __first + 1) / 2); 900171: 900171: if (__buf.begin() == 0) 900171: std::__inplace_stable_sort(__first, __last, __comp); 900171: else 900171: std::__stable_sort_adaptive(__first, __last, __buf.begin(), 900171: _DistanceType(__buf.size()), __comp); 900171: } 900171: # 5022 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algo.h" 3 900171: template 900171: inline void 900171: stable_sort(_RandomAccessIterator __first, _RandomAccessIterator __last) 900171: { 900171: 900171: 900171: 900171: 900171: 900171: ; 900171: ; 900171: 900171: std::__stable_sort(__first, __last, 900171: __gnu_cxx::__ops::__iter_less_iter()); 900171: } 900171: # 5056 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algo.h" 3 900171: template 900171: inline void 900171: stable_sort(_RandomAccessIterator __first, _RandomAccessIterator __last, 900171: _Compare __comp) 900171: { 900171: 900171: 900171: 900171: 900171: 900171: 900171: ; 900171: ; 900171: 900171: std::__stable_sort(__first, __last, 900171: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 900171: } 900171: 900171: template 900171: 900171: _OutputIterator 900171: __set_union(_InputIterator1 __first1, _InputIterator1 __last1, 900171: _InputIterator2 __first2, _InputIterator2 __last2, 900171: _OutputIterator __result, _Compare __comp) 900171: { 900171: while (__first1 != __last1 && __first2 != __last2) 900171: { 900171: if (__comp(__first1, __first2)) 900171: { 900171: *__result = *__first1; 900171: ++__first1; 900171: } 900171: else if (__comp(__first2, __first1)) 900171: { 900171: *__result = *__first2; 900171: ++__first2; 900171: } 900171: else 900171: { 900171: *__result = *__first1; 900171: ++__first1; 900171: ++__first2; 900171: } 900171: ++__result; 900171: } 900171: return std::copy(__first2, __last2, 900171: std::copy(__first1, __last1, __result)); 900171: } 900171: # 5126 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algo.h" 3 900171: template 900171: 900171: inline _OutputIterator 900171: set_union(_InputIterator1 __first1, _InputIterator1 __last1, 900171: _InputIterator2 __first2, _InputIterator2 __last2, 900171: _OutputIterator __result) 900171: { 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: ; 900171: ; 900171: ; 900171: ; 900171: 900171: return std::__set_union(__first1, __last1, 900171: __first2, __last2, __result, 900171: __gnu_cxx::__ops::__iter_less_iter()); 900171: } 900171: # 5177 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algo.h" 3 900171: template 900171: 900171: inline _OutputIterator 900171: set_union(_InputIterator1 __first1, _InputIterator1 __last1, 900171: _InputIterator2 __first2, _InputIterator2 __last2, 900171: _OutputIterator __result, _Compare __comp) 900171: { 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: ; 900171: ; 900171: ; 900171: ; 900171: 900171: return std::__set_union(__first1, __last1, 900171: __first2, __last2, __result, 900171: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 900171: } 900171: 900171: template 900171: 900171: _OutputIterator 900171: __set_intersection(_InputIterator1 __first1, _InputIterator1 __last1, 900171: _InputIterator2 __first2, _InputIterator2 __last2, 900171: _OutputIterator __result, _Compare __comp) 900171: { 900171: while (__first1 != __last1 && __first2 != __last2) 900171: if (__comp(__first1, __first2)) 900171: ++__first1; 900171: else if (__comp(__first2, __first1)) 900171: ++__first2; 900171: else 900171: { 900171: *__result = *__first1; 900171: ++__first1; 900171: ++__first2; 900171: ++__result; 900171: } 900171: return __result; 900171: } 900171: # 5250 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algo.h" 3 900171: template 900171: 900171: inline _OutputIterator 900171: set_intersection(_InputIterator1 __first1, _InputIterator1 __last1, 900171: _InputIterator2 __first2, _InputIterator2 __last2, 900171: _OutputIterator __result) 900171: { 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: ; 900171: ; 900171: ; 900171: ; 900171: 900171: return std::__set_intersection(__first1, __last1, 900171: __first2, __last2, __result, 900171: __gnu_cxx::__ops::__iter_less_iter()); 900171: } 900171: # 5300 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algo.h" 3 900171: template 900171: 900171: inline _OutputIterator 900171: set_intersection(_InputIterator1 __first1, _InputIterator1 __last1, 900171: _InputIterator2 __first2, _InputIterator2 __last2, 900171: _OutputIterator __result, _Compare __comp) 900171: { 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: ; 900171: ; 900171: ; 900171: ; 900171: 900171: return std::__set_intersection(__first1, __last1, 900171: __first2, __last2, __result, 900171: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 900171: } 900171: 900171: template 900171: 900171: _OutputIterator 900171: __set_difference(_InputIterator1 __first1, _InputIterator1 __last1, 900171: _InputIterator2 __first2, _InputIterator2 __last2, 900171: _OutputIterator __result, _Compare __comp) 900171: { 900171: while (__first1 != __last1 && __first2 != __last2) 900171: if (__comp(__first1, __first2)) 900171: { 900171: *__result = *__first1; 900171: ++__first1; 900171: ++__result; 900171: } 900171: else if (__comp(__first2, __first1)) 900171: ++__first2; 900171: else 900171: { 900171: ++__first1; 900171: ++__first2; 900171: } 900171: return std::copy(__first1, __last1, __result); 900171: } 900171: # 5375 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algo.h" 3 900171: template 900171: 900171: inline _OutputIterator 900171: set_difference(_InputIterator1 __first1, _InputIterator1 __last1, 900171: _InputIterator2 __first2, _InputIterator2 __last2, 900171: _OutputIterator __result) 900171: { 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: ; 900171: ; 900171: ; 900171: ; 900171: 900171: return std::__set_difference(__first1, __last1, 900171: __first2, __last2, __result, 900171: __gnu_cxx::__ops::__iter_less_iter()); 900171: } 900171: # 5427 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algo.h" 3 900171: template 900171: 900171: inline _OutputIterator 900171: set_difference(_InputIterator1 __first1, _InputIterator1 __last1, 900171: _InputIterator2 __first2, _InputIterator2 __last2, 900171: _OutputIterator __result, _Compare __comp) 900171: { 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: ; 900171: ; 900171: ; 900171: ; 900171: 900171: return std::__set_difference(__first1, __last1, 900171: __first2, __last2, __result, 900171: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 900171: } 900171: 900171: template 900171: 900171: _OutputIterator 900171: __set_symmetric_difference(_InputIterator1 __first1, 900171: _InputIterator1 __last1, 900171: _InputIterator2 __first2, 900171: _InputIterator2 __last2, 900171: _OutputIterator __result, 900171: _Compare __comp) 900171: { 900171: while (__first1 != __last1 && __first2 != __last2) 900171: if (__comp(__first1, __first2)) 900171: { 900171: *__result = *__first1; 900171: ++__first1; 900171: ++__result; 900171: } 900171: else if (__comp(__first2, __first1)) 900171: { 900171: *__result = *__first2; 900171: ++__first2; 900171: ++__result; 900171: } 900171: else 900171: { 900171: ++__first1; 900171: ++__first2; 900171: } 900171: return std::copy(__first2, __last2, 900171: std::copy(__first1, __last1, __result)); 900171: } 900171: # 5508 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algo.h" 3 900171: template 900171: 900171: inline _OutputIterator 900171: set_symmetric_difference(_InputIterator1 __first1, _InputIterator1 __last1, 900171: _InputIterator2 __first2, _InputIterator2 __last2, 900171: _OutputIterator __result) 900171: { 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: ; 900171: ; 900171: ; 900171: ; 900171: 900171: return std::__set_symmetric_difference(__first1, __last1, 900171: __first2, __last2, __result, 900171: __gnu_cxx::__ops::__iter_less_iter()); 900171: } 900171: # 5560 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algo.h" 3 900171: template 900171: 900171: inline _OutputIterator 900171: set_symmetric_difference(_InputIterator1 __first1, _InputIterator1 __last1, 900171: _InputIterator2 __first2, _InputIterator2 __last2, 900171: _OutputIterator __result, 900171: _Compare __comp) 900171: { 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: ; 900171: ; 900171: ; 900171: ; 900171: 900171: return std::__set_symmetric_difference(__first1, __last1, 900171: __first2, __last2, __result, 900171: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 900171: } 900171: 900171: template 900171: 900171: _ForwardIterator 900171: __min_element(_ForwardIterator __first, _ForwardIterator __last, 900171: _Compare __comp) 900171: { 900171: if (__first == __last) 900171: return __first; 900171: _ForwardIterator __result = __first; 900171: while (++__first != __last) 900171: if (__comp(__first, __result)) 900171: __result = __first; 900171: return __result; 900171: } 900171: # 5614 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algo.h" 3 900171: template 900171: 900171: _ForwardIterator 900171: inline min_element(_ForwardIterator __first, _ForwardIterator __last) 900171: { 900171: 900171: 900171: 900171: 900171: ; 900171: ; 900171: 900171: return std::__min_element(__first, __last, 900171: __gnu_cxx::__ops::__iter_less_iter()); 900171: } 900171: # 5639 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algo.h" 3 900171: template 900171: 900171: inline _ForwardIterator 900171: min_element(_ForwardIterator __first, _ForwardIterator __last, 900171: _Compare __comp) 900171: { 900171: 900171: 900171: 900171: 900171: 900171: ; 900171: ; 900171: 900171: return std::__min_element(__first, __last, 900171: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 900171: } 900171: 900171: template 900171: 900171: _ForwardIterator 900171: __max_element(_ForwardIterator __first, _ForwardIterator __last, 900171: _Compare __comp) 900171: { 900171: if (__first == __last) return __first; 900171: _ForwardIterator __result = __first; 900171: while (++__first != __last) 900171: if (__comp(__result, __first)) 900171: __result = __first; 900171: return __result; 900171: } 900171: # 5678 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algo.h" 3 900171: template 900171: 900171: inline _ForwardIterator 900171: max_element(_ForwardIterator __first, _ForwardIterator __last) 900171: { 900171: 900171: 900171: 900171: 900171: ; 900171: ; 900171: 900171: return std::__max_element(__first, __last, 900171: __gnu_cxx::__ops::__iter_less_iter()); 900171: } 900171: # 5703 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algo.h" 3 900171: template 900171: 900171: inline _ForwardIterator 900171: max_element(_ForwardIterator __first, _ForwardIterator __last, 900171: _Compare __comp) 900171: { 900171: 900171: 900171: 900171: 900171: 900171: ; 900171: ; 900171: 900171: return std::__max_element(__first, __last, 900171: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 900171: } 900171: 900171: 900171: 900171: template 900171: 900171: inline _Tp 900171: min(initializer_list<_Tp> __l) 900171: { 900171: ; 900171: return *std::__min_element(__l.begin(), __l.end(), 900171: __gnu_cxx::__ops::__iter_less_iter()); 900171: } 900171: 900171: template 900171: 900171: inline _Tp 900171: min(initializer_list<_Tp> __l, _Compare __comp) 900171: { 900171: ; 900171: return *std::__min_element(__l.begin(), __l.end(), 900171: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 900171: } 900171: 900171: template 900171: 900171: inline _Tp 900171: max(initializer_list<_Tp> __l) 900171: { 900171: ; 900171: return *std::__max_element(__l.begin(), __l.end(), 900171: __gnu_cxx::__ops::__iter_less_iter()); 900171: } 900171: 900171: template 900171: 900171: inline _Tp 900171: max(initializer_list<_Tp> __l, _Compare __comp) 900171: { 900171: ; 900171: return *std::__max_element(__l.begin(), __l.end(), 900171: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 900171: } 900171: # 5892 "/usr/aarch64-linux-gnu/include/c++/12/bits/stl_algo.h" 3 900171: 900171: 900171: } 900171: # 62 "/usr/aarch64-linux-gnu/include/c++/12/algorithm" 2 3 900171: # 41 "third_party/butteraugli/butteraugli/butteraugli.cc" 2 900171: # 1 "/usr/aarch64-linux-gnu/include/c++/12/array" 1 3 900171: # 32 "/usr/aarch64-linux-gnu/include/c++/12/array" 3 900171: 900171: # 33 "/usr/aarch64-linux-gnu/include/c++/12/array" 3 900171: 900171: 900171: 900171: 900171: 900171: # 1 "/usr/aarch64-linux-gnu/include/c++/12/compare" 1 3 900171: # 33 "/usr/aarch64-linux-gnu/include/c++/12/compare" 3 900171: 900171: # 34 "/usr/aarch64-linux-gnu/include/c++/12/compare" 3 900171: # 39 "/usr/aarch64-linux-gnu/include/c++/12/array" 2 3 900171: # 48 "/usr/aarch64-linux-gnu/include/c++/12/array" 3 900171: namespace std __attribute__ ((__visibility__ ("default"))) 900171: { 900171: 900171: 900171: template 900171: struct __array_traits 900171: { 900171: typedef _Tp _Type[_Nm]; 900171: typedef __is_swappable<_Tp> _Is_swappable; 900171: typedef __is_nothrow_swappable<_Tp> _Is_nothrow_swappable; 900171: 900171: static constexpr _Tp& 900171: _S_ref(const _Type& __t, std::size_t __n) noexcept 900171: { return const_cast<_Tp&>(__t[__n]); } 900171: 900171: static constexpr _Tp* 900171: _S_ptr(const _Type& __t) noexcept 900171: { return const_cast<_Tp*>(__t); } 900171: }; 900171: 900171: template 900171: struct __array_traits<_Tp, 0> 900171: { 900171: struct _Type { }; 900171: typedef true_type _Is_swappable; 900171: typedef true_type _Is_nothrow_swappable; 900171: 900171: static constexpr _Tp& 900171: _S_ref(const _Type&, std::size_t) noexcept 900171: { return *static_cast<_Tp*>(nullptr); } 900171: 900171: static constexpr _Tp* 900171: _S_ptr(const _Type&) noexcept 900171: { return nullptr; } 900171: }; 900171: # 98 "/usr/aarch64-linux-gnu/include/c++/12/array" 3 900171: template 900171: struct array 900171: { 900171: typedef _Tp value_type; 900171: typedef value_type* pointer; 900171: typedef const value_type* const_pointer; 900171: typedef value_type& reference; 900171: typedef const value_type& const_reference; 900171: typedef value_type* iterator; 900171: typedef const value_type* const_iterator; 900171: typedef std::size_t size_type; 900171: typedef std::ptrdiff_t difference_type; 900171: typedef std::reverse_iterator reverse_iterator; 900171: typedef std::reverse_iterator const_reverse_iterator; 900171: 900171: 900171: typedef __array_traits<_Tp, _Nm> _AT_Type; 900171: typename _AT_Type::_Type _M_elems; 900171: 900171: 900171: 900171: 900171: void 900171: fill(const value_type& __u) 900171: { std::fill_n(begin(), size(), __u); } 900171: 900171: void 900171: swap(array& __other) 900171: noexcept(_AT_Type::_Is_nothrow_swappable::value) 900171: { std::swap_ranges(begin(), end(), __other.begin()); } 900171: 900171: 900171: [[__gnu__::__const__, __nodiscard__]] 900171: iterator 900171: begin() noexcept 900171: { return iterator(data()); } 900171: 900171: [[__nodiscard__]] 900171: const_iterator 900171: begin() const noexcept 900171: { return const_iterator(data()); } 900171: 900171: [[__gnu__::__const__, __nodiscard__]] 900171: iterator 900171: end() noexcept 900171: { return iterator(data() + _Nm); } 900171: 900171: [[__nodiscard__]] 900171: const_iterator 900171: end() const noexcept 900171: { return const_iterator(data() + _Nm); } 900171: 900171: [[__gnu__::__const__, __nodiscard__]] 900171: reverse_iterator 900171: rbegin() noexcept 900171: { return reverse_iterator(end()); } 900171: 900171: [[__nodiscard__]] 900171: const_reverse_iterator 900171: rbegin() const noexcept 900171: { return const_reverse_iterator(end()); } 900171: 900171: [[__gnu__::__const__, __nodiscard__]] 900171: reverse_iterator 900171: rend() noexcept 900171: { return reverse_iterator(begin()); } 900171: 900171: [[__nodiscard__]] 900171: const_reverse_iterator 900171: rend() const noexcept 900171: { return const_reverse_iterator(begin()); } 900171: 900171: [[__nodiscard__]] 900171: const_iterator 900171: cbegin() const noexcept 900171: { return const_iterator(data()); } 900171: 900171: [[__nodiscard__]] 900171: const_iterator 900171: cend() const noexcept 900171: { return const_iterator(data() + _Nm); } 900171: 900171: [[__nodiscard__]] 900171: const_reverse_iterator 900171: crbegin() const noexcept 900171: { return const_reverse_iterator(end()); } 900171: 900171: [[__nodiscard__]] 900171: const_reverse_iterator 900171: crend() const noexcept 900171: { return const_reverse_iterator(begin()); } 900171: 900171: 900171: [[__gnu__::__const__, __nodiscard__]] 900171: constexpr size_type 900171: size() const noexcept { return _Nm; } 900171: 900171: [[__gnu__::__const__, __nodiscard__]] 900171: constexpr size_type 900171: max_size() const noexcept { return _Nm; } 900171: 900171: [[__gnu__::__const__, __nodiscard__]] 900171: constexpr bool 900171: empty() const noexcept { return size() == 0; } 900171: 900171: 900171: [[__nodiscard__]] 900171: reference 900171: operator[](size_type __n) noexcept 900171: { 900171: ; 900171: return _AT_Type::_S_ref(_M_elems, __n); 900171: } 900171: 900171: [[__nodiscard__]] 900171: constexpr const_reference 900171: operator[](size_type __n) const noexcept 900171: { 900171: 900171: 900171: 900171: return _AT_Type::_S_ref(_M_elems, __n); 900171: } 900171: 900171: reference 900171: at(size_type __n) 900171: { 900171: if (__n >= _Nm) 900171: std::__throw_out_of_range_fmt(("array::at: __n (which is %zu) " ">= _Nm (which is %zu)") 900171: , 900171: __n, _Nm); 900171: return _AT_Type::_S_ref(_M_elems, __n); 900171: } 900171: 900171: constexpr const_reference 900171: at(size_type __n) const 900171: { 900171: 900171: 900171: return __n < _Nm ? _AT_Type::_S_ref(_M_elems, __n) 900171: : (std::__throw_out_of_range_fmt(("array::at: __n (which is %zu) " ">= _Nm (which is %zu)") 900171: , 900171: __n, _Nm), 900171: _AT_Type::_S_ref(_M_elems, 0)); 900171: } 900171: 900171: [[__nodiscard__]] 900171: reference 900171: front() noexcept 900171: { 900171: ; 900171: return *begin(); 900171: } 900171: 900171: [[__nodiscard__]] 900171: constexpr const_reference 900171: front() const noexcept 900171: { 900171: 900171: 900171: 900171: return _AT_Type::_S_ref(_M_elems, 0); 900171: } 900171: 900171: [[__nodiscard__]] 900171: reference 900171: back() noexcept 900171: { 900171: ; 900171: return _Nm ? *(end() - 1) : *end(); 900171: } 900171: 900171: [[__nodiscard__]] 900171: constexpr const_reference 900171: back() const noexcept 900171: { 900171: 900171: 900171: 900171: return _Nm ? _AT_Type::_S_ref(_M_elems, _Nm - 1) 900171: : _AT_Type::_S_ref(_M_elems, 0); 900171: } 900171: 900171: [[__gnu__::__const__, __nodiscard__]] 900171: pointer 900171: data() noexcept 900171: { return _AT_Type::_S_ptr(_M_elems); } 900171: 900171: [[__nodiscard__]] 900171: const_pointer 900171: data() const noexcept 900171: { return _AT_Type::_S_ptr(_M_elems); } 900171: }; 900171: # 300 "/usr/aarch64-linux-gnu/include/c++/12/array" 3 900171: template 900171: [[__nodiscard__]] 900171: 900171: inline bool 900171: operator==(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two) 900171: { return std::equal(__one.begin(), __one.end(), __two.begin()); } 900171: # 329 "/usr/aarch64-linux-gnu/include/c++/12/array" 3 900171: template 900171: [[__nodiscard__]] 900171: 900171: inline bool 900171: operator!=(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two) 900171: { return !(__one == __two); } 900171: 900171: template 900171: [[__nodiscard__]] 900171: 900171: inline bool 900171: operator<(const array<_Tp, _Nm>& __a, const array<_Tp, _Nm>& __b) 900171: { 900171: return std::lexicographical_compare(__a.begin(), __a.end(), 900171: __b.begin(), __b.end()); 900171: } 900171: 900171: template 900171: [[__nodiscard__]] 900171: 900171: inline bool 900171: operator>(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two) 900171: { return __two < __one; } 900171: 900171: template 900171: [[__nodiscard__]] 900171: 900171: inline bool 900171: operator<=(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two) 900171: { return !(__one > __two); } 900171: 900171: template 900171: [[__nodiscard__]] 900171: 900171: inline bool 900171: operator>=(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two) 900171: { return !(__one < __two); } 900171: 900171: 900171: 900171: template 900171: 900171: inline 900171: 900171: 900171: 900171: 900171: 900171: 900171: void 900171: 900171: swap(array<_Tp, _Nm>& __one, array<_Tp, _Nm>& __two) 900171: noexcept(noexcept(__one.swap(__two))) 900171: { __one.swap(__two); } 900171: # 391 "/usr/aarch64-linux-gnu/include/c++/12/array" 3 900171: template 900171: [[__nodiscard__]] 900171: constexpr _Tp& 900171: get(array<_Tp, _Nm>& __arr) noexcept 900171: { 900171: static_assert(_Int < _Nm, "array index is within bounds"); 900171: return __array_traits<_Tp, _Nm>::_S_ref(__arr._M_elems, _Int); 900171: } 900171: 900171: template 900171: [[__nodiscard__]] 900171: constexpr _Tp&& 900171: get(array<_Tp, _Nm>&& __arr) noexcept 900171: { 900171: static_assert(_Int < _Nm, "array index is within bounds"); 900171: return std::move(std::get<_Int>(__arr)); 900171: } 900171: 900171: template 900171: [[__nodiscard__]] 900171: constexpr const _Tp& 900171: get(const array<_Tp, _Nm>& __arr) noexcept 900171: { 900171: static_assert(_Int < _Nm, "array index is within bounds"); 900171: return __array_traits<_Tp, _Nm>::_S_ref(__arr._M_elems, _Int); 900171: } 900171: 900171: template 900171: [[__nodiscard__]] 900171: constexpr const _Tp&& 900171: get(const array<_Tp, _Nm>&& __arr) noexcept 900171: { 900171: static_assert(_Int < _Nm, "array index is within bounds"); 900171: return std::move(std::get<_Int>(__arr)); 900171: } 900171: # 470 "/usr/aarch64-linux-gnu/include/c++/12/array" 3 900171: template 900171: struct tuple_size> 900171: : public integral_constant { }; 900171: 900171: 900171: template 900171: struct tuple_element<_Ind, array<_Tp, _Nm>> 900171: { 900171: static_assert(_Ind < _Nm, "array index is in range"); 900171: using type = _Tp; 900171: }; 900171: # 490 "/usr/aarch64-linux-gnu/include/c++/12/array" 3 900171: template 900171: struct __is_tuple_like_impl> : true_type 900171: { }; 900171: 900171: 900171: } 900171: # 42 "third_party/butteraugli/butteraugli/butteraugli.cc" 2 900171: 900171: 900171: 900171: 900171: 900171: 900171: 900171: # 48 "third_party/butteraugli/butteraugli/butteraugli.cc" 900171: namespace butteraugli { 900171: 900171: void *CacheAligned::Allocate(const size_t bytes) { 900171: char *const allocated = static_cast(malloc(bytes + kCacheLineSize)); 900171: if (allocated == nullptr) { 900171: return nullptr; 900171: } 900171: const uintptr_t misalignment = 900171: reinterpret_cast(allocated) & (kCacheLineSize - 1); 900171: 900171: 900171: 900171: # 59 "third_party/butteraugli/butteraugli/butteraugli.cc" 3 900171: (static_cast ( 900171: # 59 "third_party/butteraugli/butteraugli/butteraugli.cc" 900171: misalignment % kPointerSize == 0 900171: # 59 "third_party/butteraugli/butteraugli/butteraugli.cc" 3 900171: ) ? void (0) : __assert_fail ( 900171: # 59 "third_party/butteraugli/butteraugli/butteraugli.cc" 900171: "misalignment % kPointerSize == 0" 900171: # 59 "third_party/butteraugli/butteraugli/butteraugli.cc" 3 900171: , "third_party/butteraugli/butteraugli/butteraugli.cc", 59, __extension__ __PRETTY_FUNCTION__)) 900171: # 59 "third_party/butteraugli/butteraugli/butteraugli.cc" 900171: ; 900171: char *const aligned = allocated + kCacheLineSize - misalignment; 900171: memcpy(aligned - kPointerSize, &allocated, kPointerSize); 900171: return aligned; 900171: } 900171: 900171: void CacheAligned::Free(void *aligned_pointer) { 900171: if (aligned_pointer == nullptr) { 900171: return; 900171: } 900171: char *const aligned = static_cast(aligned_pointer); 900171: 900171: # 70 "third_party/butteraugli/butteraugli/butteraugli.cc" 3 900171: (static_cast ( 900171: # 70 "third_party/butteraugli/butteraugli/butteraugli.cc" 900171: reinterpret_cast(aligned) % kCacheLineSize == 0 900171: # 70 "third_party/butteraugli/butteraugli/butteraugli.cc" 3 900171: ) ? void (0) : __assert_fail ( 900171: # 70 "third_party/butteraugli/butteraugli/butteraugli.cc" 900171: "reinterpret_cast(aligned) % kCacheLineSize == 0" 900171: # 70 "third_party/butteraugli/butteraugli/butteraugli.cc" 3 900171: , "third_party/butteraugli/butteraugli/butteraugli.cc", 70, __extension__ __PRETTY_FUNCTION__)) 900171: # 70 "third_party/butteraugli/butteraugli/butteraugli.cc" 900171: ; 900171: char *allocated; 900171: memcpy(&allocated, aligned - kPointerSize, kPointerSize); 900171: 900171: # 73 "third_party/butteraugli/butteraugli/butteraugli.cc" 3 900171: (static_cast ( 900171: # 73 "third_party/butteraugli/butteraugli/butteraugli.cc" 900171: allocated <= aligned - kPointerSize 900171: # 73 "third_party/butteraugli/butteraugli/butteraugli.cc" 3 900171: ) ? void (0) : __assert_fail ( 900171: # 73 "third_party/butteraugli/butteraugli/butteraugli.cc" 900171: "allocated <= aligned - kPointerSize" 900171: # 73 "third_party/butteraugli/butteraugli/butteraugli.cc" 3 900171: , "third_party/butteraugli/butteraugli/butteraugli.cc", 73, __extension__ __PRETTY_FUNCTION__)) 900171: # 73 "third_party/butteraugli/butteraugli/butteraugli.cc" 900171: ; 900171: 900171: # 74 "third_party/butteraugli/butteraugli/butteraugli.cc" 3 900171: (static_cast ( 900171: # 74 "third_party/butteraugli/butteraugli/butteraugli.cc" 900171: allocated >= aligned - kCacheLineSize 900171: # 74 "third_party/butteraugli/butteraugli/butteraugli.cc" 3 900171: ) ? void (0) : __assert_fail ( 900171: # 74 "third_party/butteraugli/butteraugli/butteraugli.cc" 900171: "allocated >= aligned - kCacheLineSize" 900171: # 74 "third_party/butteraugli/butteraugli/butteraugli.cc" 3 900171: , "third_party/butteraugli/butteraugli/butteraugli.cc", 74, __extension__ __PRETTY_FUNCTION__)) 900171: # 74 "third_party/butteraugli/butteraugli/butteraugli.cc" 900171: ; 900171: free(allocated); 900171: } 900171: 900171: static inline bool IsNan(const float x) { 900171: uint32_t bits; 900171: memcpy(&bits, &x, sizeof(bits)); 900171: const uint32_t bitmask_exp = 0x7F800000; 900171: return (bits & bitmask_exp) == bitmask_exp && (bits & 0x7FFFFF); 900171: } 900171: 900171: static inline bool IsNan(const double x) { 900171: uint64_t bits; 900171: memcpy(&bits, &x, sizeof(bits)); 900171: return (0x7ff0000000000001ULL <= bits && bits <= 0x7fffffffffffffffULL) || 900171: (0xfff0000000000001ULL <= bits && bits <= 0xffffffffffffffffULL); 900171: } 900171: 900171: static inline void CheckImage(const ImageF &image, const char *name) { 900171: for (size_t y = 0; y < image.ysize(); ++y) { 900171: ConstRestrict row = image.Row(y); 900171: for (size_t x = 0; x < image.xsize(); ++x) { 900171: if (IsNan(row[x])) { 900171: printf("Image %s @ %lu,%lu (of %lu,%lu)\n", name, x, y, image.xsize(), 900171: image.ysize()); 900171: exit(1); 900171: } 900171: } 900171: } 900171: } 900171: # 125 "third_party/butteraugli/butteraugli/butteraugli.cc" 900171: static const double kInternalGoodQualityThreshold = 14.921561160295326; 900171: static const double kGlobalScale = 1.0 / kInternalGoodQualityThreshold; 900171: 900171: inline double DotProduct(const double u[3], const double v[3]) { 900171: return u[0] * v[0] + u[1] * v[1] + u[2] * v[2]; 900171: } 900171: 900171: inline double DotProduct(const float u[3], const double v[3]) { 900171: return u[0] * v[0] + u[1] * v[1] + u[2] * v[2]; 900171: } 900171: 900171: 900171: static void Convolution(size_t xsize, size_t ysize, 900171: size_t xstep, 900171: size_t len, size_t offset, 900171: const float* __restrict__ multipliers, 900171: const float* __restrict__ inp, 900171: double border_ratio, 900171: float* __restrict__ result) { 900171: ; 900171: double weight_no_border = 0; 900171: for (int j = 0; j <= 2 * offset; ++j) { 900171: weight_no_border += multipliers[j]; 900171: } 900171: for (size_t x = 0, ox = 0; x < xsize; x += xstep, ox++) { 900171: int minx = x < offset ? 0 : x - offset; 900171: int maxx = std::min(xsize, x + len - offset) - 1; 900171: double weight = 0.0; 900171: for (int j = minx; j <= maxx; ++j) { 900171: weight += multipliers[j - x + offset]; 900171: } 900171: 900171: weight = (1.0 - border_ratio) * weight + border_ratio * weight_no_border; 900171: double scale = 1.0 / weight; 900171: for (size_t y = 0; y < ysize; ++y) { 900171: double sum = 0.0; 900171: for (int j = minx; j <= maxx; ++j) { 900171: sum += inp[y * xsize + j] * multipliers[j - x + offset]; 900171: } 900171: result[ox * ysize + y] = sum * scale; 900171: } 900171: } 900171: } 900171: 900171: void Blur(size_t xsize, size_t ysize, float* channel, double sigma, 900171: double border_ratio) { 900171: ; 900171: double m = 2.25; 900171: const double scaler = -1.0 / (2 * sigma * sigma); 900171: 900171: const int diff = std::max(1, m * fabs(sigma)); 900171: const int expn_size = 2 * diff + 1; 900171: std::vector expn(expn_size); 900171: for (int i = -diff; i <= diff; ++i) { 900171: expn[i + diff] = exp(scaler * i * i); 900171: } 900171: const int xstep = std::max(1, int(sigma / 3)); 900171: const int ystep = xstep; 900171: int dxsize = (xsize + xstep - 1) / xstep; 900171: int dysize = (ysize + ystep - 1) / ystep; 900171: std::vector tmp(dxsize * ysize); 900171: std::vector downsampled_output(dxsize * dysize); 900171: Convolution(xsize, ysize, xstep, expn_size, diff, expn.data(), channel, 900171: border_ratio, 900171: tmp.data()); 900171: Convolution(ysize, dxsize, ystep, expn_size, diff, expn.data(), tmp.data(), 900171: border_ratio, 900171: downsampled_output.data()); 900171: for (int y = 0; y < ysize; y++) { 900171: for (int x = 0; x < xsize; x++) { 900171: 900171: channel[y * xsize + x] = 900171: downsampled_output[(y / ystep) * dxsize + (x / xstep)]; 900171: } 900171: } 900171: } 900171: 900171: 900171: constexpr size_t kBlockEdge = 8; 900171: constexpr size_t kBlockSize = kBlockEdge * kBlockEdge; 900171: constexpr size_t kBlockEdgeHalf = kBlockEdge / 2; 900171: constexpr size_t kBlockHalf = kBlockEdge * kBlockEdgeHalf; 900171: 900171: 900171: static const double *GetContrastSensitivityMatrix() { 900171: static double csf8x8[kBlockHalf + kBlockEdgeHalf + 1] = { 900171: 5.28270670524, 900171: 0.0, 900171: 0.0, 900171: 0.0, 900171: 0.3831134973, 900171: 0.676303603859, 900171: 3.58927792424, 900171: 18.6104367002, 900171: 18.6104367002, 900171: 3.09093131948, 900171: 1.0, 900171: 0.498250875965, 900171: 0.36198671102, 900171: 0.308982169883, 900171: 0.1312701920435, 900171: 2.37370549629, 900171: 3.58927792424, 900171: 1.0, 900171: 2.37370549629, 900171: 0.991205724152, 900171: 1.05178802919, 900171: 0.627264168628, 900171: 0.4, 900171: 0.1312701920435, 900171: 0.676303603859, 900171: 0.498250875965, 900171: 0.991205724152, 900171: 0.5, 900171: 0.3831134973, 900171: 0.349686450518, 900171: 0.627264168628, 900171: 0.308982169883, 900171: 0.3831134973, 900171: 0.36198671102, 900171: 1.05178802919, 900171: 0.3831134973, 900171: 0.12, 900171: }; 900171: return &csf8x8[0]; 900171: } 900171: 900171: std::array MakeHighFreqColorDiffDx() { 900171: std::array lut; 900171: static const double off = 11.38708334481672; 900171: static const double inc = 14.550189611520716; 900171: lut[0] = 0.0; 900171: lut[1] = off; 900171: for (int i = 2; i < 21; ++i) { 900171: lut[i] = lut[i - 1] + inc; 900171: } 900171: return lut; 900171: } 900171: 900171: const double *GetHighFreqColorDiffDx() { 900171: static const std::array kLut = MakeHighFreqColorDiffDx(); 900171: return kLut.data(); 900171: } 900171: 900171: std::array MakeHighFreqColorDiffDy() { 900171: std::array lut; 900171: static const double off = 1.4103373714040413; 900171: static const double inc = 0.7084088867024; 900171: lut[0] = 0.0; 900171: lut[1] = off; 900171: for (int i = 2; i < 21; ++i) { 900171: lut[i] = lut[i - 1] + inc; 900171: } 900171: return lut; 900171: } 900171: 900171: const double *GetHighFreqColorDiffDy() { 900171: static const std::array kLut = MakeHighFreqColorDiffDy(); 900171: return kLut.data(); 900171: } 900171: 900171: std::array MakeLowFreqColorDiffDy() { 900171: std::array lut; 900171: static const double inc = 5.2511644570349185; 900171: lut[0] = 0.0; 900171: for (int i = 1; i < 21; ++i) { 900171: lut[i] = lut[i - 1] + inc; 900171: } 900171: return lut; 900171: } 900171: 900171: const double *GetLowFreqColorDiffDy() { 900171: static const std::array kLut = MakeLowFreqColorDiffDy(); 900171: return kLut.data(); 900171: } 900171: 900171: inline double Interpolate(const double *array, int size, double sx) { 900171: double ix = fabs(sx); 900171: 900171: # 303 "third_party/butteraugli/butteraugli/butteraugli.cc" 3 900171: (static_cast ( 900171: # 303 "third_party/butteraugli/butteraugli/butteraugli.cc" 900171: ix < 10000 900171: # 303 "third_party/butteraugli/butteraugli/butteraugli.cc" 3 900171: ) ? void (0) : __assert_fail ( 900171: # 303 "third_party/butteraugli/butteraugli/butteraugli.cc" 900171: "ix < 10000" 900171: # 303 "third_party/butteraugli/butteraugli/butteraugli.cc" 3 900171: , "third_party/butteraugli/butteraugli/butteraugli.cc", 303, __extension__ __PRETTY_FUNCTION__)) 900171: # 303 "third_party/butteraugli/butteraugli/butteraugli.cc" 900171: ; 900171: int baseix = static_cast(ix); 900171: double res; 900171: if (baseix >= size - 1) { 900171: res = array[size - 1]; 900171: } else { 900171: double mix = ix - baseix; 900171: int nextix = baseix + 1; 900171: res = array[baseix] + mix * (array[nextix] - array[baseix]); 900171: } 900171: if (sx < 0) res = -res; 900171: return res; 900171: } 900171: 900171: inline double InterpolateClampNegative(const double *array, 900171: int size, double sx) { 900171: if (sx < 0) { 900171: sx = 0; 900171: } 900171: double ix = fabs(sx); 900171: int baseix = static_cast(ix); 900171: double res; 900171: if (baseix >= size - 1) { 900171: res = array[size - 1]; 900171: } else { 900171: double mix = ix - baseix; 900171: int nextix = baseix + 1; 900171: res = array[baseix] + mix * (array[nextix] - array[baseix]); 900171: } 900171: return res; 900171: } 900171: 900171: void RgbToXyb(double r, double g, double b, 900171: double *valx, double *valy, double *valz) { 900171: static const double a0 = 1.01611726948; 900171: static const double a1 = 0.982482243696; 900171: static const double a2 = 1.43571362627; 900171: static const double a3 = 0.896039849412; 900171: *valx = a0 * r - a1 * g; 900171: *valy = a2 * r + a3 * g; 900171: *valz = b; 900171: } 900171: 900171: static inline void XybToVals(double x, double y, double z, 900171: double *valx, double *valy, double *valz) { 900171: static const double xmul = 0.758304045695; 900171: static const double ymul = 2.28148649801; 900171: static const double zmul = 1.87816926918; 900171: *valx = Interpolate(GetHighFreqColorDiffDx(), 21, x * xmul); 900171: *valy = Interpolate(GetHighFreqColorDiffDy(), 21, y * ymul); 900171: *valz = zmul * z; 900171: } 900171: 900171: 900171: static void XybLowFreqToVals(double x, double y, double z, 900171: double *valx, double *valy, double *valz) { 900171: static const double xmul = 6.64482198135; 900171: static const double ymul = 0.837846224276; 900171: static const double zmul = 7.34905756986; 900171: static const double y_to_z_mul = 0.0812519812628; 900171: z += y_to_z_mul * y; 900171: *valz = z * zmul; 900171: *valx = x * xmul; 900171: *valy = Interpolate(GetLowFreqColorDiffDy(), 21, y * ymul); 900171: } 900171: 900171: double RemoveRangeAroundZero(double v, double range) { 900171: if (v >= -range && v < range) { 900171: return 0; 900171: } 900171: if (v < 0) { 900171: return v + range; 900171: } else { 900171: return v - range; 900171: } 900171: } 900171: 900171: void XybDiffLowFreqSquaredAccumulate(double r0, double g0, double b0, 900171: double r1, double g1, double b1, 900171: double factor, double res[3]) { 900171: double valx0, valy0, valz0; 900171: double valx1, valy1, valz1; 900171: XybLowFreqToVals(r0, g0, b0, &valx0, &valy0, &valz0); 900171: if (r1 == 0.0 && g1 == 0.0 && b1 == 0.0) { 900171: ; 900171: res[0] += factor * valx0 * valx0; 900171: res[1] += factor * valy0 * valy0; 900171: res[2] += factor * valz0 * valz0; 900171: return; 900171: } 900171: XybLowFreqToVals(r1, g1, b1, &valx1, &valy1, &valz1); 900171: 900171: 900171: double valx = valx0 - valx1; 900171: double valy = valy0 - valy1; 900171: double valz = valz0 - valz1; 900171: res[0] += factor * valx * valx; 900171: res[1] += factor * valy * valy; 900171: res[2] += factor * valz * valz; 900171: } 900171: 900171: struct Complex { 900171: public: 900171: double real; 900171: double imag; 900171: }; 900171: 900171: inline double abssq(const Complex& c) { 900171: return c.real * c.real + c.imag * c.imag; 900171: } 900171: 900171: static void TransposeBlock(Complex data[kBlockSize]) { 900171: for (int i = 0; i < kBlockEdge; i++) { 900171: for (int j = 0; j < i; j++) { 900171: std::swap(data[kBlockEdge * i + j], data[kBlockEdge * j + i]); 900171: } 900171: } 900171: } 900171: 900171: 900171: inline void FFT4(Complex* a) { 900171: double t1, t2, t3, t4, t5, t6, t7, t8; 900171: t5 = a[2].real; 900171: t1 = a[0].real - t5; 900171: t7 = a[3].real; 900171: t5 += a[0].real; 900171: t3 = a[1].real - t7; 900171: t7 += a[1].real; 900171: t8 = t5 + t7; 900171: a[0].real = t8; 900171: t5 -= t7; 900171: a[1].real = t5; 900171: t6 = a[2].imag; 900171: t2 = a[0].imag - t6; 900171: t6 += a[0].imag; 900171: t5 = a[3].imag; 900171: a[2].imag = t2 + t3; 900171: t2 -= t3; 900171: a[3].imag = t2; 900171: t4 = a[1].imag - t5; 900171: a[3].real = t1 + t4; 900171: t1 -= t4; 900171: a[2].real = t1; 900171: t5 += a[1].imag; 900171: a[0].imag = t6 + t5; 900171: t6 -= t5; 900171: a[1].imag = t6; 900171: } 900171: 900171: static const double kSqrtHalf = 0.70710678118654752440084436210484903; 900171: 900171: 900171: void FFT8(Complex* a) { 900171: double t1, t2, t3, t4, t5, t6, t7, t8; 900171: 900171: t7 = a[4].imag; 900171: t4 = a[0].imag - t7; 900171: t7 += a[0].imag; 900171: a[0].imag = t7; 900171: 900171: t8 = a[6].real; 900171: t5 = a[2].real - t8; 900171: t8 += a[2].real; 900171: a[2].real = t8; 900171: 900171: t7 = a[6].imag; 900171: a[6].imag = t4 - t5; 900171: t4 += t5; 900171: a[4].imag = t4; 900171: 900171: t6 = a[2].imag - t7; 900171: t7 += a[2].imag; 900171: a[2].imag = t7; 900171: 900171: t8 = a[4].real; 900171: t3 = a[0].real - t8; 900171: t8 += a[0].real; 900171: a[0].real = t8; 900171: 900171: a[4].real = t3 - t6; 900171: t3 += t6; 900171: a[6].real = t3; 900171: 900171: t7 = a[5].real; 900171: t3 = a[1].real - t7; 900171: t7 += a[1].real; 900171: a[1].real = t7; 900171: 900171: t8 = a[7].imag; 900171: t6 = a[3].imag - t8; 900171: t8 += a[3].imag; 900171: a[3].imag = t8; 900171: t1 = t3 - t6; 900171: t3 += t6; 900171: 900171: t7 = a[5].imag; 900171: t4 = a[1].imag - t7; 900171: t7 += a[1].imag; 900171: a[1].imag = t7; 900171: 900171: t8 = a[7].real; 900171: t5 = a[3].real - t8; 900171: t8 += a[3].real; 900171: a[3].real = t8; 900171: 900171: t2 = t4 - t5; 900171: t4 += t5; 900171: 900171: t6 = t1 - t4; 900171: t8 = kSqrtHalf; 900171: t6 *= t8; 900171: a[5].real = a[4].real - t6; 900171: t1 += t4; 900171: t1 *= t8; 900171: a[5].imag = a[4].imag - t1; 900171: t6 += a[4].real; 900171: a[4].real = t6; 900171: t1 += a[4].imag; 900171: a[4].imag = t1; 900171: 900171: t5 = t2 - t3; 900171: t5 *= t8; 900171: a[7].imag = a[6].imag - t5; 900171: t2 += t3; 900171: t2 *= t8; 900171: a[7].real = a[6].real - t2; 900171: t2 += a[6].real; 900171: a[6].real = t2; 900171: t5 += a[6].imag; 900171: a[6].imag = t5; 900171: 900171: FFT4(a); 900171: 900171: 900171: 900171: Complex tmp = a[2]; 900171: a[2] = a[3]; 900171: a[3] = a[5]; 900171: a[5] = a[7]; 900171: a[7] = a[4]; 900171: a[4] = a[1]; 900171: a[1] = a[6]; 900171: a[6] = tmp; 900171: } 900171: 900171: 900171: 900171: 900171: void RealFFT8(const double* in, Complex* out) { 900171: double t1, t2, t3, t5, t6, t7, t8; 900171: t8 = in[6]; 900171: t5 = in[2] - t8; 900171: t8 += in[2]; 900171: out[2].real = t8; 900171: out[6].imag = -t5; 900171: out[4].imag = t5; 900171: t8 = in[4]; 900171: t3 = in[0] - t8; 900171: t8 += in[0]; 900171: out[0].real = t8; 900171: out[4].real = t3; 900171: out[6].real = t3; 900171: t7 = in[5]; 900171: t3 = in[1] - t7; 900171: t7 += in[1]; 900171: out[1].real = t7; 900171: t8 = in[7]; 900171: t5 = in[3] - t8; 900171: t8 += in[3]; 900171: out[3].real = t8; 900171: t2 = -t5; 900171: t6 = t3 - t5; 900171: t8 = kSqrtHalf; 900171: t6 *= t8; 900171: out[5].real = out[4].real - t6; 900171: t1 = t3 + t5; 900171: t1 *= t8; 900171: out[5].imag = out[4].imag - t1; 900171: t6 += out[4].real; 900171: out[4].real = t6; 900171: t1 += out[4].imag; 900171: out[4].imag = t1; 900171: t5 = t2 - t3; 900171: t5 *= t8; 900171: out[7].imag = out[6].imag - t5; 900171: t2 += t3; 900171: t2 *= t8; 900171: out[7].real = out[6].real - t2; 900171: t2 += out[6].real; 900171: out[6].real = t2; 900171: t5 += out[6].imag; 900171: out[6].imag = t5; 900171: t5 = out[2].real; 900171: t1 = out[0].real - t5; 900171: t7 = out[3].real; 900171: t5 += out[0].real; 900171: t3 = out[1].real - t7; 900171: t7 += out[1].real; 900171: t8 = t5 + t7; 900171: out[0].real = t8; 900171: t5 -= t7; 900171: out[1].real = t5; 900171: out[2].imag = t3; 900171: out[3].imag = -t3; 900171: out[3].real = t1; 900171: out[2].real = t1; 900171: out[0].imag = 0; 900171: out[1].imag = 0; 900171: 900171: 900171: 900171: Complex tmp = out[2]; 900171: out[2] = out[3]; 900171: out[3] = out[5]; 900171: out[5] = out[7]; 900171: out[7] = out[4]; 900171: out[4] = out[1]; 900171: out[1] = out[6]; 900171: out[6] = tmp; 900171: } 900171: 900171: 900171: 900171: void ButteraugliFFTSquared(double block[kBlockSize]) { 900171: double global_mul = 0.000064; 900171: Complex block_c[kBlockSize]; 900171: 900171: # 629 "third_party/butteraugli/butteraugli/butteraugli.cc" 3 900171: (static_cast ( 900171: # 629 "third_party/butteraugli/butteraugli/butteraugli.cc" 900171: kBlockEdge == 8 900171: # 629 "third_party/butteraugli/butteraugli/butteraugli.cc" 3 900171: ) ? void (0) : __assert_fail ( 900171: # 629 "third_party/butteraugli/butteraugli/butteraugli.cc" 900171: "kBlockEdge == 8" 900171: # 629 "third_party/butteraugli/butteraugli/butteraugli.cc" 3 900171: , "third_party/butteraugli/butteraugli/butteraugli.cc", 629, __extension__ __PRETTY_FUNCTION__)) 900171: # 629 "third_party/butteraugli/butteraugli/butteraugli.cc" 900171: ; 900171: for (int y = 0; y < kBlockEdge; ++y) { 900171: RealFFT8(block + y * kBlockEdge, block_c + y * kBlockEdge); 900171: } 900171: TransposeBlock(block_c); 900171: double r0[kBlockEdge]; 900171: double r1[kBlockEdge]; 900171: for (int x = 0; x < kBlockEdge; ++x) { 900171: r0[x] = block_c[x].real; 900171: r1[x] = block_c[kBlockHalf + x].real; 900171: } 900171: RealFFT8(r0, block_c); 900171: RealFFT8(r1, block_c + kBlockHalf); 900171: for (int y = 1; y < kBlockEdgeHalf; ++y) { 900171: FFT8(block_c + y * kBlockEdge); 900171: } 900171: for (int i = kBlockEdgeHalf; i < kBlockHalf + kBlockEdgeHalf + 1; ++i) { 900171: block[i] = abssq(block_c[i]); 900171: block[i] *= global_mul; 900171: } 900171: } 900171: 900171: 900171: 900171: 900171: void ButteraugliBlockDiff(double xyb0[3 * kBlockSize], 900171: double xyb1[3 * kBlockSize], 900171: double diff_xyb_dc[3], 900171: double diff_xyb_ac[3], 900171: double diff_xyb_edge_dc[3]) { 900171: ; 900171: const double *csf8x8 = GetContrastSensitivityMatrix(); 900171: 900171: double avgdiff_xyb[3] = {0.0}; 900171: double avgdiff_edge[3][4] = { {0.0} }; 900171: for (int i = 0; i < 3 * kBlockSize; ++i) { 900171: const double diff_xyb = xyb0[i] - xyb1[i]; 900171: const int c = i / kBlockSize; 900171: avgdiff_xyb[c] += diff_xyb / kBlockSize; 900171: const int k = i % kBlockSize; 900171: const int kx = k % kBlockEdge; 900171: const int ky = k / kBlockEdge; 900171: const int h_edge_idx = ky == 0 ? 1 : ky == 7 ? 3 : -1; 900171: const int v_edge_idx = kx == 0 ? 0 : kx == 7 ? 2 : -1; 900171: if (h_edge_idx >= 0) { 900171: avgdiff_edge[c][h_edge_idx] += diff_xyb / kBlockEdge; 900171: } 900171: if (v_edge_idx >= 0) { 900171: avgdiff_edge[c][v_edge_idx] += diff_xyb / kBlockEdge; 900171: } 900171: } 900171: XybDiffLowFreqSquaredAccumulate(avgdiff_xyb[0], 900171: avgdiff_xyb[1], 900171: avgdiff_xyb[2], 900171: 0, 0, 0, csf8x8[0], 900171: diff_xyb_dc); 900171: for (int i = 0; i < 4; ++i) { 900171: XybDiffLowFreqSquaredAccumulate(avgdiff_edge[0][i], 900171: avgdiff_edge[1][i], 900171: avgdiff_edge[2][i], 900171: 0, 0, 0, csf8x8[0], 900171: diff_xyb_edge_dc); 900171: } 900171: 900171: double* xyb_avg = xyb0; 900171: double* xyb_halfdiff = xyb1; 900171: for(int i = 0; i < 3 * kBlockSize; ++i) { 900171: double avg = (xyb0[i] + xyb1[i])/2; 900171: double halfdiff = (xyb0[i] - xyb1[i])/2; 900171: xyb_avg[i] = avg; 900171: xyb_halfdiff[i] = halfdiff; 900171: } 900171: double *y_avg = &xyb_avg[kBlockSize]; 900171: double *x_halfdiff_squared = &xyb_halfdiff[0]; 900171: double *y_halfdiff = &xyb_halfdiff[kBlockSize]; 900171: double *z_halfdiff_squared = &xyb_halfdiff[2 * kBlockSize]; 900171: ButteraugliFFTSquared(y_avg); 900171: ButteraugliFFTSquared(x_halfdiff_squared); 900171: ButteraugliFFTSquared(y_halfdiff); 900171: ButteraugliFFTSquared(z_halfdiff_squared); 900171: 900171: static const double xmul = 64.8; 900171: static const double ymul = 1.753123908348329; 900171: static const double ymul2 = 1.51983458269; 900171: static const double zmul = 2.4; 900171: 900171: for (size_t i = kBlockEdgeHalf; i < kBlockHalf + kBlockEdgeHalf + 1; ++i) { 900171: double d = csf8x8[i]; 900171: diff_xyb_ac[0] += d * xmul * x_halfdiff_squared[i]; 900171: diff_xyb_ac[2] += d * zmul * z_halfdiff_squared[i]; 900171: 900171: y_avg[i] = sqrt(y_avg[i]); 900171: y_halfdiff[i] = sqrt(y_halfdiff[i]); 900171: double y0 = y_avg[i] - y_halfdiff[i]; 900171: double y1 = y_avg[i] + y_halfdiff[i]; 900171: 900171: 900171: static const double ylimit = 0.04; 900171: y0 = RemoveRangeAroundZero(y0, ylimit); 900171: y1 = RemoveRangeAroundZero(y1, ylimit); 900171: if (y0 != y1) { 900171: double valy0 = Interpolate(GetHighFreqColorDiffDy(), 21, y0 * ymul2); 900171: double valy1 = Interpolate(GetHighFreqColorDiffDy(), 21, y1 * ymul2); 900171: double valy = ymul * (valy0 - valy1); 900171: diff_xyb_ac[1] += d * valy * valy; 900171: } 900171: } 900171: } 900171: 900171: 900171: 900171: 900171: void Butteraugli8x8CornerEdgeDetectorDiff( 900171: const size_t pos_x, 900171: const size_t pos_y, 900171: const size_t xsize, 900171: const size_t ysize, 900171: const std::vector > &blurred0, 900171: const std::vector > &blurred1, 900171: double diff_xyb[3]) { 900171: ; 900171: int local_count = 0; 900171: double local_xyb[3] = { 0 }; 900171: static const double w = 0.711100840192; 900171: for (int k = 0; k < 4; ++k) { 900171: size_t step = 3; 900171: size_t offset[4][2] = { { 0, 0 }, { 0, 7 }, { 7, 0 }, { 7, 7 } }; 900171: size_t x = pos_x + offset[k][0]; 900171: size_t y = pos_y + offset[k][1]; 900171: if (x >= step && x + step < xsize) { 900171: size_t ix = y * xsize + (x - step); 900171: size_t ix2 = ix + 2 * step; 900171: XybDiffLowFreqSquaredAccumulate( 900171: w * (blurred0[0][ix] - blurred0[0][ix2]), 900171: w * (blurred0[1][ix] - blurred0[1][ix2]), 900171: w * (blurred0[2][ix] - blurred0[2][ix2]), 900171: w * (blurred1[0][ix] - blurred1[0][ix2]), 900171: w * (blurred1[1][ix] - blurred1[1][ix2]), 900171: w * (blurred1[2][ix] - blurred1[2][ix2]), 900171: 1.0, local_xyb); 900171: ++local_count; 900171: } 900171: if (y >= step && y + step < ysize) { 900171: size_t ix = (y - step) * xsize + x; 900171: size_t ix2 = ix + 2 * step * xsize; 900171: XybDiffLowFreqSquaredAccumulate( 900171: w * (blurred0[0][ix] - blurred0[0][ix2]), 900171: w * (blurred0[1][ix] - blurred0[1][ix2]), 900171: w * (blurred0[2][ix] - blurred0[2][ix2]), 900171: w * (blurred1[0][ix] - blurred1[0][ix2]), 900171: w * (blurred1[1][ix] - blurred1[1][ix2]), 900171: w * (blurred1[2][ix] - blurred1[2][ix2]), 900171: 1.0, local_xyb); 900171: ++local_count; 900171: } 900171: } 900171: static const double weight = 0.01617112696; 900171: const double mul = weight * 8.0 / local_count; 900171: for (int i = 0; i < 3; ++i) { 900171: diff_xyb[i] += mul * local_xyb[i]; 900171: } 900171: } 900171: 900171: 900171: const double *GetOpsinAbsorbance() { 900171: static const double kMix[12] = { 900171: 0.348036746003, 900171: 0.577814843137, 900171: 0.0544556093735, 900171: 0.774145581713, 900171: 0.26922717275, 900171: 0.767247733938, 900171: 0.0366922708552, 900171: 0.920130265014, 900171: 0.0882062883536, 900171: 0.158581714673, 900171: 0.712857943858, 900171: 10.6524069248, 900171: }; 900171: return &kMix[0]; 900171: } 900171: 900171: void OpsinAbsorbance(const double in[3], double out[3]) { 900171: const double *mix = GetOpsinAbsorbance(); 900171: out[0] = mix[0] * in[0] + mix[1] * in[1] + mix[2] * in[2] + mix[3]; 900171: out[1] = mix[4] * in[0] + mix[5] * in[1] + mix[6] * in[2] + mix[7]; 900171: out[2] = mix[8] * in[0] + mix[9] * in[1] + mix[10] * in[2] + mix[11]; 900171: } 900171: 900171: double GammaMinArg() { 900171: double in[3] = { 0.0, 0.0, 0.0 }; 900171: double out[3]; 900171: OpsinAbsorbance(in, out); 900171: return std::min(out[0], std::min(out[1], out[2])); 900171: } 900171: 900171: double GammaMaxArg() { 900171: double in[3] = { 255.0, 255.0, 255.0 }; 900171: double out[3]; 900171: OpsinAbsorbance(in, out); 900171: return std::max(out[0], std::max(out[1], out[2])); 900171: } 900171: 900171: ButteraugliComparator::ButteraugliComparator( 900171: size_t xsize, size_t ysize, int step) 900171: : xsize_(xsize), 900171: ysize_(ysize), 900171: num_pixels_(xsize * ysize), 900171: step_(step), 900171: res_xsize_((xsize + step - 1) / step), 900171: res_ysize_((ysize + step - 1) / step) { 900171: 900171: # 840 "third_party/butteraugli/butteraugli/butteraugli.cc" 3 900171: (static_cast ( 900171: # 840 "third_party/butteraugli/butteraugli/butteraugli.cc" 900171: step <= 4 900171: # 840 "third_party/butteraugli/butteraugli/butteraugli.cc" 3 900171: ) ? void (0) : __assert_fail ( 900171: # 840 "third_party/butteraugli/butteraugli/butteraugli.cc" 900171: "step <= 4" 900171: # 840 "third_party/butteraugli/butteraugli/butteraugli.cc" 3 900171: , "third_party/butteraugli/butteraugli/butteraugli.cc", 840, __extension__ __PRETTY_FUNCTION__)) 900171: # 840 "third_party/butteraugli/butteraugli/butteraugli.cc" 900171: ; 900171: } 900171: 900171: void MaskHighIntensityChange( 900171: size_t xsize, size_t ysize, 900171: const std::vector > &c0, 900171: const std::vector > &c1, 900171: std::vector > &xyb0, 900171: std::vector > &xyb1) { 900171: ; 900171: for (int y = 0; y < ysize; ++y) { 900171: for (int x = 0; x < xsize; ++x) { 900171: int ix = y * xsize + x; 900171: const double ave[3] = { 900171: (c0[0][ix] + c1[0][ix]) * 0.5, 900171: (c0[1][ix] + c1[1][ix]) * 0.5, 900171: (c0[2][ix] + c1[2][ix]) * 0.5, 900171: }; 900171: double sqr_max_diff = -1; 900171: { 900171: int offset[4] = 900171: { -1, 1, -static_cast(xsize), static_cast(xsize) }; 900171: int border[4] = 900171: { x == 0, x + 1 == xsize, y == 0, y + 1 == ysize }; 900171: for (int dir = 0; dir < 4; ++dir) { 900171: if (border[dir]) { 900171: continue; 900171: } 900171: const int ix2 = ix + offset[dir]; 900171: double diff = 0.5 * (c0[1][ix2] + c1[1][ix2]) - ave[1]; 900171: diff *= diff; 900171: if (sqr_max_diff < diff) { 900171: sqr_max_diff = diff; 900171: } 900171: } 900171: } 900171: static const double kReductionX = 275.19165240059317; 900171: static const double kReductionY = 18599.41286306991; 900171: static const double kReductionZ = 410.8995306951065; 900171: static const double kChromaBalance = 106.95800948271017; 900171: double chroma_scale = kChromaBalance / (ave[1] + kChromaBalance); 900171: 900171: const double mix[3] = { 900171: chroma_scale * kReductionX / (sqr_max_diff + kReductionX), 900171: kReductionY / (sqr_max_diff + kReductionY), 900171: chroma_scale * kReductionZ / (sqr_max_diff + kReductionZ), 900171: }; 900171: 900171: 900171: for (int i = 0; i < 3; ++i) { 900171: xyb0[i][ix] = mix[i] * c0[i][ix] + (1 - mix[i]) * ave[i]; 900171: xyb1[i][ix] = mix[i] * c1[i][ix] + (1 - mix[i]) * ave[i]; 900171: } 900171: } 900171: } 900171: } 900171: 900171: double SimpleGamma(double v) { 900171: static const double kGamma = 0.387494322593; 900171: static const double limit = 43.01745241042018; 900171: double bright = v - limit; 900171: if (bright >= 0) { 900171: static const double mul = 0.0383723643799; 900171: v -= bright * mul; 900171: } 900171: static const double limit2 = 94.68634353321337; 900171: double bright2 = v - limit2; 900171: if (bright2 >= 0) { 900171: static const double mul = 0.22885405968; 900171: v -= bright2 * mul; 900171: } 900171: static const double offset = 0.156775786057; 900171: static const double scale = 8.898059160493739; 900171: double retval = scale * (offset + pow(v, kGamma)); 900171: return retval; 900171: } 900171: 900171: static inline double Gamma(double v) { 900171: 900171: return GammaPolynomial(v); 900171: } 900171: 900171: void OpsinDynamicsImage(size_t xsize, size_t ysize, 900171: std::vector > &rgb) { 900171: ; 900171: std::vector > blurred = rgb; 900171: static const double kSigma = 1.1; 900171: for (int i = 0; i < 3; ++i) { 900171: Blur(xsize, ysize, blurred[i].data(), kSigma, 0.0); 900171: } 900171: for (int i = 0; i < rgb[0].size(); ++i) { 900171: double sensitivity[3]; 900171: { 900171: 900171: double pre_rgb[3] = { blurred[0][i], blurred[1][i], blurred[2][i] }; 900171: double pre_mixed[3]; 900171: OpsinAbsorbance(pre_rgb, pre_mixed); 900171: sensitivity[0] = Gamma(pre_mixed[0]) / pre_mixed[0]; 900171: sensitivity[1] = Gamma(pre_mixed[1]) / pre_mixed[1]; 900171: sensitivity[2] = Gamma(pre_mixed[2]) / pre_mixed[2]; 900171: } 900171: double cur_rgb[3] = { rgb[0][i], rgb[1][i], rgb[2][i] }; 900171: double cur_mixed[3]; 900171: OpsinAbsorbance(cur_rgb, cur_mixed); 900171: cur_mixed[0] *= sensitivity[0]; 900171: cur_mixed[1] *= sensitivity[1]; 900171: cur_mixed[2] *= sensitivity[2]; 900171: double x, y, z; 900171: RgbToXyb(cur_mixed[0], cur_mixed[1], cur_mixed[2], &x, &y, &z); 900171: rgb[0][i] = x; 900171: rgb[1][i] = y; 900171: rgb[2][i] = z; 900171: } 900171: } 900171: 900171: static void ScaleImage(double scale, std::vector *result) { 900171: ; 900171: for (size_t i = 0; i < result->size(); ++i) { 900171: (*result)[i] *= scale; 900171: } 900171: } 900171: 900171: 900171: 900171: void CalculateDiffmap(const size_t xsize, const size_t ysize, 900171: const int step, 900171: std::vector* diffmap) { 900171: ; 900171: 900171: 900171: 900171: 900171: 900171: int s2 = (8 - step) / 2; 900171: 900171: std::vector diffmap_out(xsize * ysize); 900171: const size_t res_xsize = (xsize + step - 1) / step; 900171: for (size_t res_y = 0; res_y + 8 - step < ysize; res_y += step) { 900171: for (size_t res_x = 0; res_x + 8 - step < xsize; res_x += step) { 900171: size_t res_ix = (res_y * res_xsize + res_x) / step; 900171: float orig_val = (*diffmap)[res_ix]; 900171: constexpr float kInitialSlope = 100; 900171: 900171: 900171: double val = orig_val < (1.0 / (kInitialSlope * kInitialSlope)) 900171: ? kInitialSlope * orig_val 900171: : std::sqrt(orig_val); 900171: for (size_t off_y = 0; off_y < step; ++off_y) { 900171: for (size_t off_x = 0; off_x < step; ++off_x) { 900171: diffmap_out[(res_y + off_y + s2) * xsize + res_x + off_x + s2] = val; 900171: } 900171: } 900171: } 900171: } 900171: *diffmap = diffmap_out; 900171: { 900171: static const double kSigma = 8.8510880283; 900171: static const double mul1 = 24.8235314874; 900171: static const double scale = 1.0 / (1.0 + mul1); 900171: const int s = 8 - step; 900171: std::vector blurred((xsize - s) * (ysize - s)); 900171: for (int y = 0; y < ysize - s; ++y) { 900171: for (int x = 0; x < xsize - s; ++x) { 900171: blurred[y * (xsize - s) + x] = (*diffmap)[(y + s2) * xsize + x + s2]; 900171: } 900171: } 900171: static const double border_ratio = 0.03027655136; 900171: Blur(xsize - s, ysize - s, blurred.data(), kSigma, border_ratio); 900171: for (int y = 0; y < ysize - s; ++y) { 900171: for (int x = 0; x < xsize - s; ++x) { 900171: (*diffmap)[(y + s2) * xsize + x + s2] 900171: += mul1 * blurred[y * (xsize - s) + x]; 900171: } 900171: } 900171: ScaleImage(scale, diffmap); 900171: } 900171: } 900171: 900171: void ButteraugliComparator::Diffmap(const std::vector &rgb0_arg, 900171: const std::vector &rgb1_arg, 900171: ImageF &result) { 900171: result = ImageF(xsize_, ysize_); 900171: if (xsize_ < 8 || ysize_ < 8) return; 900171: std::vector> rgb0_c = PackedFromPlanes(rgb0_arg); 900171: std::vector> rgb1_c = PackedFromPlanes(rgb1_arg); 900171: OpsinDynamicsImage(xsize_, ysize_, rgb0_c); 900171: OpsinDynamicsImage(xsize_, ysize_, rgb1_c); 900171: std::vector pg0 = PlanesFromPacked(xsize_, ysize_, rgb0_c); 900171: std::vector pg1 = PlanesFromPacked(xsize_, ysize_, rgb1_c); 900171: DiffmapOpsinDynamicsImage(pg0, pg1, result); 900171: } 900171: 900171: void ButteraugliComparator::DiffmapOpsinDynamicsImage( 900171: const std::vector &xyb0_arg, const std::vector &xyb1_arg, 900171: ImageF &result) { 900171: result = ImageF(xsize_, ysize_); 900171: if (xsize_ < 8 || ysize_ < 8) return; 900171: std::vector> xyb0 = PackedFromPlanes(xyb0_arg); 900171: std::vector> xyb1 = PackedFromPlanes(xyb1_arg); 900171: auto xyb0_c = xyb0; 900171: auto xyb1_c = xyb1; 900171: 900171: MaskHighIntensityChange(xsize_, ysize_, xyb0_c, xyb1_c, xyb0, xyb1); 900171: 900171: # 1043 "third_party/butteraugli/butteraugli/butteraugli.cc" 3 900171: (static_cast ( 900171: # 1043 "third_party/butteraugli/butteraugli/butteraugli.cc" 900171: 8 <= xsize_ 900171: # 1043 "third_party/butteraugli/butteraugli/butteraugli.cc" 3 900171: ) ? void (0) : __assert_fail ( 900171: # 1043 "third_party/butteraugli/butteraugli/butteraugli.cc" 900171: "8 <= xsize_" 900171: # 1043 "third_party/butteraugli/butteraugli/butteraugli.cc" 3 900171: , "third_party/butteraugli/butteraugli/butteraugli.cc", 1043, __extension__ __PRETTY_FUNCTION__)) 900171: # 1043 "third_party/butteraugli/butteraugli/butteraugli.cc" 900171: ; 900171: for (int i = 0; i < 3; i++) { 900171: 900171: # 1045 "third_party/butteraugli/butteraugli/butteraugli.cc" 3 900171: (static_cast ( 900171: # 1045 "third_party/butteraugli/butteraugli/butteraugli.cc" 900171: xyb0[i].size() == num_pixels_ 900171: # 1045 "third_party/butteraugli/butteraugli/butteraugli.cc" 3 900171: ) ? void (0) : __assert_fail ( 900171: # 1045 "third_party/butteraugli/butteraugli/butteraugli.cc" 900171: "xyb0[i].size() == num_pixels_" 900171: # 1045 "third_party/butteraugli/butteraugli/butteraugli.cc" 3 900171: , "third_party/butteraugli/butteraugli/butteraugli.cc", 1045, __extension__ __PRETTY_FUNCTION__)) 900171: # 1045 "third_party/butteraugli/butteraugli/butteraugli.cc" 900171: ; 900171: 900171: # 1046 "third_party/butteraugli/butteraugli/butteraugli.cc" 3 900171: (static_cast ( 900171: # 1046 "third_party/butteraugli/butteraugli/butteraugli.cc" 900171: xyb1[i].size() == num_pixels_ 900171: # 1046 "third_party/butteraugli/butteraugli/butteraugli.cc" 3 900171: ) ? void (0) : __assert_fail ( 900171: # 1046 "third_party/butteraugli/butteraugli/butteraugli.cc" 900171: "xyb1[i].size() == num_pixels_" 900171: # 1046 "third_party/butteraugli/butteraugli/butteraugli.cc" 3 900171: , "third_party/butteraugli/butteraugli/butteraugli.cc", 1046, __extension__ __PRETTY_FUNCTION__)) 900171: # 1046 "third_party/butteraugli/butteraugli/butteraugli.cc" 900171: ; 900171: } 900171: std::vector > mask_xyb(3); 900171: std::vector > mask_xyb_dc(3); 900171: std::vector block_diff_dc(3 * res_xsize_ * res_ysize_); 900171: std::vector block_diff_ac(3 * res_xsize_ * res_ysize_); 900171: std::vector edge_detector_map(3 * res_xsize_ * res_ysize_); 900171: std::vector packed_result; 900171: BlockDiffMap(xyb0, xyb1, &block_diff_dc, &block_diff_ac); 900171: EdgeDetectorMap(xyb0, xyb1, &edge_detector_map); 900171: EdgeDetectorLowFreq(xyb0, xyb1, &block_diff_ac); 900171: Mask(xyb0, xyb1, xsize_, ysize_, &mask_xyb, &mask_xyb_dc); 900171: CombineChannels(mask_xyb, mask_xyb_dc, block_diff_dc, block_diff_ac, 900171: edge_detector_map, &packed_result); 900171: CalculateDiffmap(xsize_, ysize_, step_, &packed_result); 900171: CopyFromPacked(packed_result, &result); 900171: } 900171: 900171: void ButteraugliComparator::BlockDiffMap( 900171: const std::vector > &xyb0, 900171: const std::vector > &xyb1, 900171: std::vector* block_diff_dc, 900171: std::vector* block_diff_ac) { 900171: ; 900171: for (size_t res_y = 0; res_y + (kBlockEdge - step_ - 1) < ysize_; 900171: res_y += step_) { 900171: for (size_t res_x = 0; res_x + (kBlockEdge - step_ - 1) < xsize_; 900171: res_x += step_) { 900171: size_t res_ix = (res_y * res_xsize_ + res_x) / step_; 900171: size_t offset = (std::min(res_y, ysize_ - 8) * xsize_ + 900171: std::min(res_x, xsize_ - 8)); 900171: double block0[3 * kBlockEdge * kBlockEdge]; 900171: double block1[3 * kBlockEdge * kBlockEdge]; 900171: for (int i = 0; i < 3; ++i) { 900171: double *m0 = &block0[i * kBlockEdge * kBlockEdge]; 900171: double *m1 = &block1[i * kBlockEdge * kBlockEdge]; 900171: for (size_t y = 0; y < kBlockEdge; y++) { 900171: for (size_t x = 0; x < kBlockEdge; x++) { 900171: m0[kBlockEdge * y + x] = xyb0[i][offset + y * xsize_ + x]; 900171: m1[kBlockEdge * y + x] = xyb1[i][offset + y * xsize_ + x]; 900171: } 900171: } 900171: } 900171: double diff_xyb_dc[3] = { 0.0 }; 900171: double diff_xyb_ac[3] = { 0.0 }; 900171: double diff_xyb_edge_dc[3] = { 0.0 }; 900171: ButteraugliBlockDiff(block0, block1, 900171: diff_xyb_dc, diff_xyb_ac, diff_xyb_edge_dc); 900171: for (int i = 0; i < 3; ++i) { 900171: (*block_diff_dc)[3 * res_ix + i] = diff_xyb_dc[i]; 900171: (*block_diff_ac)[3 * res_ix + i] = diff_xyb_ac[i]; 900171: } 900171: } 900171: } 900171: } 900171: 900171: void ButteraugliComparator::EdgeDetectorMap( 900171: const std::vector > &xyb0, 900171: const std::vector > &xyb1, 900171: std::vector* edge_detector_map) { 900171: ; 900171: static const double kSigma[3] = { 900171: 1.5, 900171: 0.586, 900171: 0.4, 900171: }; 900171: std::vector > blurred0(xyb0); 900171: std::vector > blurred1(xyb1); 900171: for (int i = 0; i < 3; i++) { 900171: Blur(xsize_, ysize_, blurred0[i].data(), kSigma[i], 0.0); 900171: Blur(xsize_, ysize_, blurred1[i].data(), kSigma[i], 0.0); 900171: } 900171: for (size_t res_y = 0; res_y + (8 - step_) < ysize_; res_y += step_) { 900171: for (size_t res_x = 0; res_x + (8 - step_) < xsize_; res_x += step_) { 900171: size_t res_ix = (res_y * res_xsize_ + res_x) / step_; 900171: double diff_xyb[3] = { 0.0 }; 900171: Butteraugli8x8CornerEdgeDetectorDiff(std::min(res_x, xsize_ - 8), 900171: std::min(res_y, ysize_ - 8), 900171: xsize_, ysize_, 900171: blurred0, blurred1, 900171: diff_xyb); 900171: for (int i = 0; i < 3; ++i) { 900171: (*edge_detector_map)[3 * res_ix + i] = diff_xyb[i]; 900171: } 900171: } 900171: } 900171: } 900171: 900171: void ButteraugliComparator::EdgeDetectorLowFreq( 900171: const std::vector > &xyb0, 900171: const std::vector > &xyb1, 900171: std::vector* block_diff_ac) { 900171: ; 900171: static const double kSigma = 14; 900171: static const double kMul = 10; 900171: std::vector > blurred0(xyb0); 900171: std::vector > blurred1(xyb1); 900171: for (int i = 0; i < 3; i++) { 900171: Blur(xsize_, ysize_, blurred0[i].data(), kSigma, 0.0); 900171: Blur(xsize_, ysize_, blurred1[i].data(), kSigma, 0.0); 900171: } 900171: const int step = 8; 900171: for (int y = 0; y + step < ysize_; y += step_) { 900171: int resy = y / step_; 900171: int resx = step / step_; 900171: for (int x = 0; x + step < xsize_; x += step_, resx++) { 900171: const int ix = y * xsize_ + x; 900171: const int res_ix = resy * res_xsize_ + resx; 900171: double diff[4][3]; 900171: for (int i = 0; i < 3; ++i) { 900171: int ix2 = ix + 8; 900171: diff[0][i] = 900171: ((blurred1[i][ix] - blurred0[i][ix]) + 900171: (blurred0[i][ix2] - blurred1[i][ix2])); 900171: ix2 = ix + 8 * xsize_; 900171: diff[1][i] = 900171: ((blurred1[i][ix] - blurred0[i][ix]) + 900171: (blurred0[i][ix2] - blurred1[i][ix2])); 900171: ix2 = ix + 6 * xsize_ + 6; 900171: diff[2][i] = 900171: ((blurred1[i][ix] - blurred0[i][ix]) + 900171: (blurred0[i][ix2] - blurred1[i][ix2])); 900171: ix2 = ix + 6 * xsize_ - 6; 900171: diff[3][i] = x < step ? 0 : 900171: ((blurred1[i][ix] - blurred0[i][ix]) + 900171: (blurred0[i][ix2] - blurred1[i][ix2])); 900171: } 900171: double max_diff_xyb[3] = { 0 }; 900171: for (int k = 0; k < 4; ++k) { 900171: double diff_xyb[3] = { 0 }; 900171: XybDiffLowFreqSquaredAccumulate(diff[k][0], diff[k][1], diff[k][2], 900171: 0, 0, 0, 1.0, 900171: diff_xyb); 900171: for (int i = 0; i < 3; ++i) { 900171: max_diff_xyb[i] = std::max(max_diff_xyb[i], diff_xyb[i]); 900171: } 900171: } 900171: for (int i = 0; i < 3; ++i) { 900171: (*block_diff_ac)[3 * res_ix + i] += kMul * max_diff_xyb[i]; 900171: } 900171: } 900171: } 900171: } 900171: 900171: void ButteraugliComparator::CombineChannels( 900171: const std::vector >& mask_xyb, 900171: const std::vector >& mask_xyb_dc, 900171: const std::vector& block_diff_dc, 900171: const std::vector& block_diff_ac, 900171: const std::vector& edge_detector_map, 900171: std::vector* result) { 900171: ; 900171: result->resize(res_xsize_ * res_ysize_); 900171: for (size_t res_y = 0; res_y + (8 - step_) < ysize_; res_y += step_) { 900171: for (size_t res_x = 0; res_x + (8 - step_) < xsize_; res_x += step_) { 900171: size_t res_ix = (res_y * res_xsize_ + res_x) / step_; 900171: double mask[3]; 900171: double dc_mask[3]; 900171: for (int i = 0; i < 3; ++i) { 900171: mask[i] = mask_xyb[i][(res_y + 3) * xsize_ + (res_x + 3)]; 900171: dc_mask[i] = mask_xyb_dc[i][(res_y + 3) * xsize_ + (res_x + 3)]; 900171: } 900171: (*result)[res_ix] = 900171: (DotProduct(&block_diff_dc[3 * res_ix], dc_mask) + 900171: DotProduct(&block_diff_ac[3 * res_ix], mask) + 900171: DotProduct(&edge_detector_map[3 * res_ix], mask)); 900171: } 900171: } 900171: } 900171: 900171: double ButteraugliScoreFromDiffmap(const ImageF& diffmap) { 900171: ; 900171: float retval = 0.0f; 900171: for (size_t y = 0; y < diffmap.ysize(); ++y) { 900171: ConstRestrict row = diffmap.Row(y); 900171: for (size_t x = 0; x < diffmap.xsize(); ++x) { 900171: retval = std::max(retval, row[x]); 900171: } 900171: } 900171: return retval; 900171: } 900171: 900171: static std::array MakeMask( 900171: double extmul, double extoff, 900171: double mul, double offset, 900171: double scaler) { 900171: std::array lut; 900171: for (int i = 0; i < lut.size(); ++i) { 900171: const double c = mul / ((0.01 * scaler * i) + offset); 900171: lut[i] = 1.0 + extmul * (c + extoff); 900171: 900171: # 1236 "third_party/butteraugli/butteraugli/butteraugli.cc" 3 900171: (static_cast ( 900171: # 1236 "third_party/butteraugli/butteraugli/butteraugli.cc" 900171: lut[i] >= 0.0 900171: # 1236 "third_party/butteraugli/butteraugli/butteraugli.cc" 3 900171: ) ? void (0) : __assert_fail ( 900171: # 1236 "third_party/butteraugli/butteraugli/butteraugli.cc" 900171: "lut[i] >= 0.0" 900171: # 1236 "third_party/butteraugli/butteraugli/butteraugli.cc" 3 900171: , "third_party/butteraugli/butteraugli/butteraugli.cc", 1236, __extension__ __PRETTY_FUNCTION__)) 900171: # 1236 "third_party/butteraugli/butteraugli/butteraugli.cc" 900171: ; 900171: lut[i] *= lut[i]; 900171: } 900171: return lut; 900171: } 900171: 900171: double MaskX(double delta) { 900171: ; 900171: static const double extmul = 0.975741017749; 900171: static const double extoff = -4.25328244168; 900171: static const double offset = 0.454909521427; 900171: static const double scaler = 0.0738288224836; 900171: static const double mul = 20.8029176447; 900171: static const std::array lut = 900171: MakeMask(extmul, extoff, mul, offset, scaler); 900171: return InterpolateClampNegative(lut.data(), lut.size(), delta); 900171: } 900171: 900171: double MaskY(double delta) { 900171: ; 900171: static const double extmul = 0.373995618954; 900171: static const double extoff = 1.5307267433; 900171: static const double offset = 0.911952641929; 900171: static const double scaler = 1.1731667845; 900171: static const double mul = 16.2447033988; 900171: static const std::array lut = 900171: MakeMask(extmul, extoff, mul, offset, scaler); 900171: return InterpolateClampNegative(lut.data(), lut.size(), delta); 900171: } 900171: 900171: double MaskB(double delta) { 900171: ; 900171: static const double extmul = 0.61582234137; 900171: static const double extoff = -4.25376118646; 900171: static const double offset = 1.05105070921; 900171: static const double scaler = 0.47434643535; 900171: static const double mul = 31.1444967089; 900171: static const std::array lut = 900171: MakeMask(extmul, extoff, mul, offset, scaler); 900171: return InterpolateClampNegative(lut.data(), lut.size(), delta); 900171: } 900171: 900171: double MaskDcX(double delta) { 900171: ; 900171: static const double extmul = 1.79116943438; 900171: static const double extoff = -3.86797479189; 900171: static const double offset = 0.670960225853; 900171: static const double scaler = 0.486575865525; 900171: static const double mul = 20.4563479139; 900171: static const std::array lut = 900171: MakeMask(extmul, extoff, mul, offset, scaler); 900171: return InterpolateClampNegative(lut.data(), lut.size(), delta); 900171: } 900171: 900171: double MaskDcY(double delta) { 900171: ; 900171: static const double extmul = 0.212223514236; 900171: static const double extoff = -3.65647120524; 900171: static const double offset = 1.73396799447; 900171: static const double scaler = 0.170392660501; 900171: static const double mul = 21.6566724788; 900171: static const std::array lut = 900171: MakeMask(extmul, extoff, mul, offset, scaler); 900171: return InterpolateClampNegative(lut.data(), lut.size(), delta); 900171: } 900171: 900171: double MaskDcB(double delta) { 900171: ; 900171: static const double extmul = 0.349376011816; 900171: static const double extoff = -0.894711072781; 900171: static const double offset = 0.901647926679; 900171: static const double scaler = 0.380086095024; 900171: static const double mul = 18.0373825149; 900171: static const std::array lut = 900171: MakeMask(extmul, extoff, mul, offset, scaler); 900171: return InterpolateClampNegative(lut.data(), lut.size(), delta); 900171: } 900171: 900171: 900171: 900171: 900171: 900171: void MinSquareVal(size_t square_size, size_t offset, 900171: size_t xsize, size_t ysize, 900171: float *values) { 900171: ; 900171: 900171: 900171: # 1323 "third_party/butteraugli/butteraugli/butteraugli.cc" 3 900171: (static_cast ( 900171: # 1323 "third_party/butteraugli/butteraugli/butteraugli.cc" 900171: offset < square_size 900171: # 1323 "third_party/butteraugli/butteraugli/butteraugli.cc" 3 900171: ) ? void (0) : __assert_fail ( 900171: # 1323 "third_party/butteraugli/butteraugli/butteraugli.cc" 900171: "offset < square_size" 900171: # 1323 "third_party/butteraugli/butteraugli/butteraugli.cc" 3 900171: , "third_party/butteraugli/butteraugli/butteraugli.cc", 1323, __extension__ __PRETTY_FUNCTION__)) 900171: # 1323 "third_party/butteraugli/butteraugli/butteraugli.cc" 900171: ; 900171: std::vector tmp(xsize * ysize); 900171: for (size_t y = 0; y < ysize; ++y) { 900171: const size_t minh = offset > y ? 0 : y - offset; 900171: const size_t maxh = std::min(ysize, y + square_size - offset); 900171: for (size_t x = 0; x < xsize; ++x) { 900171: double min = values[x + minh * xsize]; 900171: for (size_t j = minh + 1; j < maxh; ++j) { 900171: min = fmin(min, values[x + j * xsize]); 900171: } 900171: tmp[x + y * xsize] = min; 900171: } 900171: } 900171: for (size_t x = 0; x < xsize; ++x) { 900171: const size_t minw = offset > x ? 0 : x - offset; 900171: const size_t maxw = std::min(xsize, x + square_size - offset); 900171: for (size_t y = 0; y < ysize; ++y) { 900171: double min = tmp[minw + y * xsize]; 900171: for (size_t j = minw + 1; j < maxw; ++j) { 900171: min = fmin(min, tmp[j + y * xsize]); 900171: } 900171: values[x + y * xsize] = min; 900171: } 900171: } 900171: } 900171: 900171: 900171: void Average5x5(int xsize, int ysize, std::vector* diffs) { 900171: ; 900171: if (xsize < 4 || ysize < 4) { 900171: 900171: return; 900171: } 900171: static const float w = 0.679144890667; 900171: static const float scale = 1.0 / (5.0 + 4 * w); 900171: std::vector result = *diffs; 900171: std::vector tmp0 = *diffs; 900171: std::vector tmp1 = *diffs; 900171: ScaleImage(w, &tmp1); 900171: for (int y = 0; y < ysize; y++) { 900171: const int row0 = y * xsize; 900171: result[row0 + 1] += tmp0[row0]; 900171: result[row0 + 0] += tmp0[row0 + 1]; 900171: result[row0 + 2] += tmp0[row0 + 1]; 900171: for (int x = 2; x < xsize - 2; ++x) { 900171: result[row0 + x - 1] += tmp0[row0 + x]; 900171: result[row0 + x + 1] += tmp0[row0 + x]; 900171: } 900171: result[row0 + xsize - 3] += tmp0[row0 + xsize - 2]; 900171: result[row0 + xsize - 1] += tmp0[row0 + xsize - 2]; 900171: result[row0 + xsize - 2] += tmp0[row0 + xsize - 1]; 900171: if (y > 0) { 900171: const int rowd1 = row0 - xsize; 900171: result[rowd1 + 1] += tmp1[row0]; 900171: result[rowd1 + 0] += tmp0[row0]; 900171: for (int x = 1; x < xsize - 1; ++x) { 900171: result[rowd1 + x + 1] += tmp1[row0 + x]; 900171: result[rowd1 + x + 0] += tmp0[row0 + x]; 900171: result[rowd1 + x - 1] += tmp1[row0 + x]; 900171: } 900171: result[rowd1 + xsize - 1] += tmp0[row0 + xsize - 1]; 900171: result[rowd1 + xsize - 2] += tmp1[row0 + xsize - 1]; 900171: } 900171: if (y + 1 < ysize) { 900171: const int rowu1 = row0 + xsize; 900171: result[rowu1 + 1] += tmp1[row0]; 900171: result[rowu1 + 0] += tmp0[row0]; 900171: for (int x = 1; x < xsize - 1; ++x) { 900171: result[rowu1 + x + 1] += tmp1[row0 + x]; 900171: result[rowu1 + x + 0] += tmp0[row0 + x]; 900171: result[rowu1 + x - 1] += tmp1[row0 + x]; 900171: } 900171: result[rowu1 + xsize - 1] += tmp0[row0 + xsize - 1]; 900171: result[rowu1 + xsize - 2] += tmp1[row0 + xsize - 1]; 900171: } 900171: } 900171: *diffs = result; 900171: ScaleImage(scale, diffs); 900171: } 900171: 900171: void DiffPrecompute( 900171: const std::vector > &xyb0, 900171: const std::vector > &xyb1, 900171: size_t xsize, size_t ysize, 900171: std::vector > *mask) { 900171: ; 900171: mask->resize(3, std::vector(xyb0[0].size())); 900171: double valsh0[3] = { 0.0 }; 900171: double valsv0[3] = { 0.0 }; 900171: double valsh1[3] = { 0.0 }; 900171: double valsv1[3] = { 0.0 }; 900171: int ix2; 900171: for (size_t y = 0; y < ysize; ++y) { 900171: for (size_t x = 0; x < xsize; ++x) { 900171: size_t ix = x + xsize * y; 900171: if (x + 1 < xsize) { 900171: ix2 = ix + 1; 900171: } else { 900171: ix2 = ix - 1; 900171: } 900171: { 900171: double x0 = (xyb0[0][ix] - xyb0[0][ix2]); 900171: double y0 = (xyb0[1][ix] - xyb0[1][ix2]); 900171: double z0 = (xyb0[2][ix] - xyb0[2][ix2]); 900171: XybToVals(x0, y0, z0, &valsh0[0], &valsh0[1], &valsh0[2]); 900171: double x1 = (xyb1[0][ix] - xyb1[0][ix2]); 900171: double y1 = (xyb1[1][ix] - xyb1[1][ix2]); 900171: double z1 = (xyb1[2][ix] - xyb1[2][ix2]); 900171: XybToVals(x1, y1, z1, &valsh1[0], &valsh1[1], &valsh1[2]); 900171: } 900171: if (y + 1 < ysize) { 900171: ix2 = ix + xsize; 900171: } else { 900171: ix2 = ix - xsize; 900171: } 900171: { 900171: double x0 = (xyb0[0][ix] - xyb0[0][ix2]); 900171: double y0 = (xyb0[1][ix] - xyb0[1][ix2]); 900171: double z0 = (xyb0[2][ix] - xyb0[2][ix2]); 900171: XybToVals(x0, y0, z0, &valsv0[0], &valsv0[1], &valsv0[2]); 900171: double x1 = (xyb1[0][ix] - xyb1[0][ix2]); 900171: double y1 = (xyb1[1][ix] - xyb1[1][ix2]); 900171: double z1 = (xyb1[2][ix] - xyb1[2][ix2]); 900171: XybToVals(x1, y1, z1, &valsv1[0], &valsv1[1], &valsv1[2]); 900171: } 900171: for (int i = 0; i < 3; ++i) { 900171: double sup0 = fabs(valsh0[i]) + fabs(valsv0[i]); 900171: double sup1 = fabs(valsh1[i]) + fabs(valsv1[i]); 900171: double m = std::min(sup0, sup1); 900171: (*mask)[i][ix] = m; 900171: } 900171: } 900171: } 900171: } 900171: 900171: void Mask(const std::vector > &xyb0, 900171: const std::vector > &xyb1, 900171: size_t xsize, size_t ysize, 900171: std::vector > *mask, 900171: std::vector > *mask_dc) { 900171: ; 900171: mask->resize(3); 900171: mask_dc->resize(3); 900171: for (int i = 0; i < 3; ++i) { 900171: (*mask)[i].resize(xsize * ysize); 900171: (*mask_dc)[i].resize(xsize * ysize); 900171: } 900171: DiffPrecompute(xyb0, xyb1, xsize, ysize, mask); 900171: for (int i = 0; i < 3; ++i) { 900171: Average5x5(xsize, ysize, &(*mask)[i]); 900171: MinSquareVal(4, 0, xsize, ysize, (*mask)[i].data()); 900171: static const double sigma[3] = { 900171: 9.65781083553, 900171: 14.2644604355, 900171: 4.53358927369, 900171: }; 900171: Blur(xsize, ysize, (*mask)[i].data(), sigma[i], 0.0); 900171: } 900171: static const double w00 = 232.206464018; 900171: static const double w11 = 22.9455222245; 900171: static const double w22 = 503.962310606; 900171: 900171: for (size_t y = 0; y < ysize; ++y) { 900171: for (size_t x = 0; x < xsize; ++x) { 900171: const size_t idx = y * xsize + x; 900171: const double s0 = (*mask)[0][idx]; 900171: const double s1 = (*mask)[1][idx]; 900171: const double s2 = (*mask)[2][idx]; 900171: const double p0 = w00 * s0; 900171: const double p1 = w11 * s1; 900171: const double p2 = w22 * s2; 900171: 900171: (*mask)[0][idx] = MaskX(p0); 900171: (*mask)[1][idx] = MaskY(p1); 900171: (*mask)[2][idx] = MaskB(p2); 900171: (*mask_dc)[0][idx] = MaskDcX(p0); 900171: (*mask_dc)[1][idx] = MaskDcY(p1); 900171: (*mask_dc)[2][idx] = MaskDcB(p2); 900171: } 900171: } 900171: for (int i = 0; i < 3; ++i) { 900171: ScaleImage(kGlobalScale * kGlobalScale, &(*mask)[i]); 900171: ScaleImage(kGlobalScale * kGlobalScale, &(*mask_dc)[i]); 900171: } 900171: } 900171: 900171: void ButteraugliDiffmap(const std::vector &rgb0_image, 900171: const std::vector &rgb1_image, 900171: ImageF &result_image) { 900171: const size_t xsize = rgb0_image[0].xsize(); 900171: const size_t ysize = rgb0_image[0].ysize(); 900171: ButteraugliComparator butteraugli(xsize, ysize, 3); 900171: butteraugli.Diffmap(rgb0_image, rgb1_image, result_image); 900171: } 900171: 900171: bool ButteraugliInterface(const std::vector &rgb0, 900171: const std::vector &rgb1, 900171: ImageF &diffmap, 900171: double &diffvalue) { 900171: const size_t xsize = rgb0[0].xsize(); 900171: const size_t ysize = rgb0[0].ysize(); 900171: if (xsize < 1 || ysize < 1) { 900171: 900171: 900171: 900171: return false; 900171: } 900171: for (int i = 1; i < 3; i++) { 900171: if (rgb0[i].xsize() != xsize || rgb0[i].ysize() != ysize || 900171: rgb1[i].xsize() != xsize || rgb1[i].ysize() != ysize) { 900171: return false; 900171: } 900171: } 900171: if (xsize < 8 || ysize < 8) { 900171: for (int y = 0; y < ysize; ++y) { 900171: for (int x = 0; x < xsize; ++x) { 900171: diffmap.Row(y)[x] = 0; 900171: } 900171: } 900171: diffvalue = 0; 900171: return true; 900171: } 900171: ButteraugliDiffmap(rgb0, rgb1, diffmap); 900171: diffvalue = ButteraugliScoreFromDiffmap(diffmap); 900171: return true; 900171: } 900171: 900171: bool ButteraugliAdaptiveQuantization(size_t xsize, size_t ysize, 900171: const std::vector > &rgb, std::vector &quant) { 900171: if (xsize < 16 || ysize < 16) { 900171: return false; 900171: } 900171: size_t size = xsize * ysize; 900171: 900171: std::vector > scale_xyb(3); 900171: std::vector > scale_xyb_dc(3); 900171: Mask(rgb, rgb, xsize, ysize, &scale_xyb, &scale_xyb_dc); 900171: quant.resize(size); 900171: 900171: 900171: 900171: for (size_t i = 0; i < size; i++) { 900171: quant[i] = scale_xyb[1][i]; 900171: } 900171: return true; 900171: } 900171: 900171: double ButteraugliFuzzyClass(double score) { 900171: static const double fuzzy_width_up = 10.287189655; 900171: static const double fuzzy_width_down = 6.97490803335; 900171: static const double m0 = 2.0; 900171: double fuzzy_width = score < 1.0 ? fuzzy_width_down : fuzzy_width_up; 900171: return m0 / (1.0 + exp((score - 1.0) * fuzzy_width)); 900171: } 900171: 900171: double ButteraugliFuzzyInverse(double seek) { 900171: double pos = 0; 900171: for (double range = 1.0; range >= 1e-10; range *= 0.5) { 900171: double cur = ButteraugliFuzzyClass(pos); 900171: if (cur < seek) { 900171: pos -= range; 900171: } else { 900171: pos += range; 900171: } 900171: } 900171: return pos; 900171: } 900171: 900171: } === END GCC DUMP === make[2]: *** [guetzli.make:208: obj/Release/butteraugli.o] Error 1 make[1]: *** [Makefile:27: guetzli] Error 2 make[1]: Leaving directory '/<>' dh_auto_build: error: make -j1 PKG_CONFIG=aarch64-linux-gnu-pkg-config CXX=aarch64-linux-gnu-g\+\+ CC=aarch64-linux-gnu-gcc returned exit code 2 make: *** [debian/rules:7: build-arch] Error 25 dpkg-buildpackage: error: debian/rules build-arch subprocess returned exit status 2 -------------------------------------------------------------------------------- Build finished at 2023-05-10T15:10:19Z Finished -------- +------------------------------------------------------------------------------+ | Cleanup | +------------------------------------------------------------------------------+ Purging /<> Not cleaning session: cloned chroot in use E: Build failure (dpkg-buildpackage died) +------------------------------------------------------------------------------+ | Summary | +------------------------------------------------------------------------------+ Build Architecture: amd64 Build Profiles: cross nocheck Build Type: any Build-Space: 10876 Build-Time: 24 Distribution: unstable Fail-Stage: build Foreign Architectures: arm64 Host Architecture: arm64 Install-Time: 14 Job: guetzli_1.0.1-1 Machine Architecture: amd64 Package: guetzli Package-Time: 50 Source-Version: 1.0.1-1 Space: 10876 Status: attempted Version: 1.0.1-1 -------------------------------------------------------------------------------- Finished at 2023-05-10T15:10:19Z Build needed 00:00:50, 10876k disk space