diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@alloca.h b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@alloca.h
new file mode 100644
index 0000000..efc7116
--- /dev/null
+++ b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@alloca.h
@@ -0,0 +1,40 @@
+/* Copyright (C) 1992-2023 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ . */
+
+#ifndef _ALLOCA_H
+#define _ALLOCA_H 1
+
+#include
+
+#define __need_size_t
+#include
+
+__BEGIN_DECLS
+
+/* Remove any previous definition. */
+#undef alloca
+
+/* Allocate a block that will be freed when the calling function exits. */
+extern void *alloca (size_t __size) __THROW;
+
+#ifdef __GNUC__
+# define alloca(size) __builtin_alloca (size)
+#endif /* GCC. */
+
+__END_DECLS
+
+#endif /* alloca.h */
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@alloca.h.blob b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@alloca.h.blob
new file mode 100644
index 0000000..88867cc
Binary files /dev/null and b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@alloca.h.blob differ
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@asm-generic@errno-base.h b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@asm-generic@errno-base.h
new file mode 100644
index 0000000..9653140
--- /dev/null
+++ b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@asm-generic@errno-base.h
@@ -0,0 +1,40 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
+#ifndef _ASM_GENERIC_ERRNO_BASE_H
+#define _ASM_GENERIC_ERRNO_BASE_H
+
+#define EPERM 1 /* Operation not permitted */
+#define ENOENT 2 /* No such file or directory */
+#define ESRCH 3 /* No such process */
+#define EINTR 4 /* Interrupted system call */
+#define EIO 5 /* I/O error */
+#define ENXIO 6 /* No such device or address */
+#define E2BIG 7 /* Argument list too long */
+#define ENOEXEC 8 /* Exec format error */
+#define EBADF 9 /* Bad file number */
+#define ECHILD 10 /* No child processes */
+#define EAGAIN 11 /* Try again */
+#define ENOMEM 12 /* Out of memory */
+#define EACCES 13 /* Permission denied */
+#define EFAULT 14 /* Bad address */
+#define ENOTBLK 15 /* Block device required */
+#define EBUSY 16 /* Device or resource busy */
+#define EEXIST 17 /* File exists */
+#define EXDEV 18 /* Cross-device link */
+#define ENODEV 19 /* No such device */
+#define ENOTDIR 20 /* Not a directory */
+#define EISDIR 21 /* Is a directory */
+#define EINVAL 22 /* Invalid argument */
+#define ENFILE 23 /* File table overflow */
+#define EMFILE 24 /* Too many open files */
+#define ENOTTY 25 /* Not a typewriter */
+#define ETXTBSY 26 /* Text file busy */
+#define EFBIG 27 /* File too large */
+#define ENOSPC 28 /* No space left on device */
+#define ESPIPE 29 /* Illegal seek */
+#define EROFS 30 /* Read-only file system */
+#define EMLINK 31 /* Too many links */
+#define EPIPE 32 /* Broken pipe */
+#define EDOM 33 /* Math argument out of domain of func */
+#define ERANGE 34 /* Math result not representable */
+
+#endif
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@asm-generic@errno-base.h.blob b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@asm-generic@errno-base.h.blob
new file mode 100644
index 0000000..1d9e756
Binary files /dev/null and b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@asm-generic@errno-base.h.blob differ
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@asm-generic@errno.h b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@asm-generic@errno.h
new file mode 100644
index 0000000..cf9c51a
--- /dev/null
+++ b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@asm-generic@errno.h
@@ -0,0 +1,123 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
+#ifndef _ASM_GENERIC_ERRNO_H
+#define _ASM_GENERIC_ERRNO_H
+
+#include
+
+#define EDEADLK 35 /* Resource deadlock would occur */
+#define ENAMETOOLONG 36 /* File name too long */
+#define ENOLCK 37 /* No record locks available */
+
+/*
+ * This error code is special: arch syscall entry code will return
+ * -ENOSYS if users try to call a syscall that doesn't exist. To keep
+ * failures of syscalls that really do exist distinguishable from
+ * failures due to attempts to use a nonexistent syscall, syscall
+ * implementations should refrain from returning -ENOSYS.
+ */
+#define ENOSYS 38 /* Invalid system call number */
+
+#define ENOTEMPTY 39 /* Directory not empty */
+#define ELOOP 40 /* Too many symbolic links encountered */
+#define EWOULDBLOCK EAGAIN /* Operation would block */
+#define ENOMSG 42 /* No message of desired type */
+#define EIDRM 43 /* Identifier removed */
+#define ECHRNG 44 /* Channel number out of range */
+#define EL2NSYNC 45 /* Level 2 not synchronized */
+#define EL3HLT 46 /* Level 3 halted */
+#define EL3RST 47 /* Level 3 reset */
+#define ELNRNG 48 /* Link number out of range */
+#define EUNATCH 49 /* Protocol driver not attached */
+#define ENOCSI 50 /* No CSI structure available */
+#define EL2HLT 51 /* Level 2 halted */
+#define EBADE 52 /* Invalid exchange */
+#define EBADR 53 /* Invalid request descriptor */
+#define EXFULL 54 /* Exchange full */
+#define ENOANO 55 /* No anode */
+#define EBADRQC 56 /* Invalid request code */
+#define EBADSLT 57 /* Invalid slot */
+
+#define EDEADLOCK EDEADLK
+
+#define EBFONT 59 /* Bad font file format */
+#define ENOSTR 60 /* Device not a stream */
+#define ENODATA 61 /* No data available */
+#define ETIME 62 /* Timer expired */
+#define ENOSR 63 /* Out of streams resources */
+#define ENONET 64 /* Machine is not on the network */
+#define ENOPKG 65 /* Package not installed */
+#define EREMOTE 66 /* Object is remote */
+#define ENOLINK 67 /* Link has been severed */
+#define EADV 68 /* Advertise error */
+#define ESRMNT 69 /* Srmount error */
+#define ECOMM 70 /* Communication error on send */
+#define EPROTO 71 /* Protocol error */
+#define EMULTIHOP 72 /* Multihop attempted */
+#define EDOTDOT 73 /* RFS specific error */
+#define EBADMSG 74 /* Not a data message */
+#define EOVERFLOW 75 /* Value too large for defined data type */
+#define ENOTUNIQ 76 /* Name not unique on network */
+#define EBADFD 77 /* File descriptor in bad state */
+#define EREMCHG 78 /* Remote address changed */
+#define ELIBACC 79 /* Can not access a needed shared library */
+#define ELIBBAD 80 /* Accessing a corrupted shared library */
+#define ELIBSCN 81 /* .lib section in a.out corrupted */
+#define ELIBMAX 82 /* Attempting to link in too many shared libraries */
+#define ELIBEXEC 83 /* Cannot exec a shared library directly */
+#define EILSEQ 84 /* Illegal byte sequence */
+#define ERESTART 85 /* Interrupted system call should be restarted */
+#define ESTRPIPE 86 /* Streams pipe error */
+#define EUSERS 87 /* Too many users */
+#define ENOTSOCK 88 /* Socket operation on non-socket */
+#define EDESTADDRREQ 89 /* Destination address required */
+#define EMSGSIZE 90 /* Message too long */
+#define EPROTOTYPE 91 /* Protocol wrong type for socket */
+#define ENOPROTOOPT 92 /* Protocol not available */
+#define EPROTONOSUPPORT 93 /* Protocol not supported */
+#define ESOCKTNOSUPPORT 94 /* Socket type not supported */
+#define EOPNOTSUPP 95 /* Operation not supported on transport endpoint */
+#define EPFNOSUPPORT 96 /* Protocol family not supported */
+#define EAFNOSUPPORT 97 /* Address family not supported by protocol */
+#define EADDRINUSE 98 /* Address already in use */
+#define EADDRNOTAVAIL 99 /* Cannot assign requested address */
+#define ENETDOWN 100 /* Network is down */
+#define ENETUNREACH 101 /* Network is unreachable */
+#define ENETRESET 102 /* Network dropped connection because of reset */
+#define ECONNABORTED 103 /* Software caused connection abort */
+#define ECONNRESET 104 /* Connection reset by peer */
+#define ENOBUFS 105 /* No buffer space available */
+#define EISCONN 106 /* Transport endpoint is already connected */
+#define ENOTCONN 107 /* Transport endpoint is not connected */
+#define ESHUTDOWN 108 /* Cannot send after transport endpoint shutdown */
+#define ETOOMANYREFS 109 /* Too many references: cannot splice */
+#define ETIMEDOUT 110 /* Connection timed out */
+#define ECONNREFUSED 111 /* Connection refused */
+#define EHOSTDOWN 112 /* Host is down */
+#define EHOSTUNREACH 113 /* No route to host */
+#define EALREADY 114 /* Operation already in progress */
+#define EINPROGRESS 115 /* Operation now in progress */
+#define ESTALE 116 /* Stale file handle */
+#define EUCLEAN 117 /* Structure needs cleaning */
+#define ENOTNAM 118 /* Not a XENIX named type file */
+#define ENAVAIL 119 /* No XENIX semaphores available */
+#define EISNAM 120 /* Is a named type file */
+#define EREMOTEIO 121 /* Remote I/O error */
+#define EDQUOT 122 /* Quota exceeded */
+
+#define ENOMEDIUM 123 /* No medium found */
+#define EMEDIUMTYPE 124 /* Wrong medium type */
+#define ECANCELED 125 /* Operation Canceled */
+#define ENOKEY 126 /* Required key not available */
+#define EKEYEXPIRED 127 /* Key has expired */
+#define EKEYREVOKED 128 /* Key has been revoked */
+#define EKEYREJECTED 129 /* Key was rejected by service */
+
+/* for robust mutexes */
+#define EOWNERDEAD 130 /* Owner died */
+#define ENOTRECOVERABLE 131 /* State not recoverable */
+
+#define ERFKILL 132 /* Operation not possible due to RF-kill */
+
+#define EHWPOISON 133 /* Memory page has hardware error */
+
+#endif
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@asm-generic@errno.h.blob b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@asm-generic@errno.h.blob
new file mode 100644
index 0000000..cf7b1e1
Binary files /dev/null and b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@asm-generic@errno.h.blob differ
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@asm@errno.h b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@asm@errno.h
new file mode 100644
index 0000000..4c82b50
--- /dev/null
+++ b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@asm@errno.h
@@ -0,0 +1 @@
+#include
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@asm@errno.h.blob b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@asm@errno.h.blob
new file mode 100644
index 0000000..43dd4fa
Binary files /dev/null and b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@asm@errno.h.blob differ
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@atomic_wide_counter.h b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@atomic_wide_counter.h
new file mode 100644
index 0000000..5730e77
--- /dev/null
+++ b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@atomic_wide_counter.h
@@ -0,0 +1,35 @@
+/* Monotonically increasing wide counters (at least 62 bits).
+ Copyright (C) 2016-2023 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ . */
+
+#ifndef _BITS_ATOMIC_WIDE_COUNTER_H
+#define _BITS_ATOMIC_WIDE_COUNTER_H
+
+/* Counter that is monotonically increasing (by less than 2**31 per
+ increment), with a single writer, and an arbitrary number of
+ readers. */
+typedef union
+{
+ __extension__ unsigned long long int __value64;
+ struct
+ {
+ unsigned int __low;
+ unsigned int __high;
+ } __value32;
+} __atomic_wide_counter;
+
+#endif /* _BITS_ATOMIC_WIDE_COUNTER_H */
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@atomic_wide_counter.h.blob b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@atomic_wide_counter.h.blob
new file mode 100644
index 0000000..e37e5a9
Binary files /dev/null and b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@atomic_wide_counter.h.blob differ
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@byteswap.h b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@byteswap.h
new file mode 100644
index 0000000..456dd17
--- /dev/null
+++ b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@byteswap.h
@@ -0,0 +1,79 @@
+/* Macros and inline functions to swap the order of bytes in integer values.
+ Copyright (C) 1997-2023 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ . */
+
+#if !defined _BYTESWAP_H && !defined _NETINET_IN_H && !defined _ENDIAN_H
+# error "Never use directly; include instead."
+#endif
+
+#ifndef _BITS_BYTESWAP_H
+#define _BITS_BYTESWAP_H 1
+
+#include
+#include
+
+/* Swap bytes in 16-bit value. */
+#define __bswap_constant_16(x) \
+ ((__uint16_t) ((((x) >> 8) & 0xff) | (((x) & 0xff) << 8)))
+
+static __inline __uint16_t
+__bswap_16 (__uint16_t __bsx)
+{
+#if __GNUC_PREREQ (4, 8)
+ return __builtin_bswap16 (__bsx);
+#else
+ return __bswap_constant_16 (__bsx);
+#endif
+}
+
+/* Swap bytes in 32-bit value. */
+#define __bswap_constant_32(x) \
+ ((((x) & 0xff000000u) >> 24) | (((x) & 0x00ff0000u) >> 8) \
+ | (((x) & 0x0000ff00u) << 8) | (((x) & 0x000000ffu) << 24))
+
+static __inline __uint32_t
+__bswap_32 (__uint32_t __bsx)
+{
+#if __GNUC_PREREQ (4, 3)
+ return __builtin_bswap32 (__bsx);
+#else
+ return __bswap_constant_32 (__bsx);
+#endif
+}
+
+/* Swap bytes in 64-bit value. */
+#define __bswap_constant_64(x) \
+ ((((x) & 0xff00000000000000ull) >> 56) \
+ | (((x) & 0x00ff000000000000ull) >> 40) \
+ | (((x) & 0x0000ff0000000000ull) >> 24) \
+ | (((x) & 0x000000ff00000000ull) >> 8) \
+ | (((x) & 0x00000000ff000000ull) << 8) \
+ | (((x) & 0x0000000000ff0000ull) << 24) \
+ | (((x) & 0x000000000000ff00ull) << 40) \
+ | (((x) & 0x00000000000000ffull) << 56))
+
+__extension__ static __inline __uint64_t
+__bswap_64 (__uint64_t __bsx)
+{
+#if __GNUC_PREREQ (4, 3)
+ return __builtin_bswap64 (__bsx);
+#else
+ return __bswap_constant_64 (__bsx);
+#endif
+}
+
+#endif /* _BITS_BYTESWAP_H */
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@byteswap.h.blob b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@byteswap.h.blob
new file mode 100644
index 0000000..37df1da
Binary files /dev/null and b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@byteswap.h.blob differ
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@cpu-set.h b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@cpu-set.h
new file mode 100644
index 0000000..16037ea
--- /dev/null
+++ b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@cpu-set.h
@@ -0,0 +1,124 @@
+/* Definition of the cpu_set_t structure used by the POSIX 1003.1b-1993
+ scheduling interface.
+ Copyright (C) 1996-2023 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ . */
+
+#ifndef _BITS_CPU_SET_H
+#define _BITS_CPU_SET_H 1
+
+#ifndef _SCHED_H
+# error "Never include directly; use instead."
+#endif
+
+/* Size definition for CPU sets. */
+#define __CPU_SETSIZE 1024
+#define __NCPUBITS (8 * sizeof (__cpu_mask))
+
+/* Type for array elements in 'cpu_set_t'. */
+typedef __CPU_MASK_TYPE __cpu_mask;
+
+/* Basic access functions. */
+#define __CPUELT(cpu) ((cpu) / __NCPUBITS)
+#define __CPUMASK(cpu) ((__cpu_mask) 1 << ((cpu) % __NCPUBITS))
+
+/* Data structure to describe CPU mask. */
+typedef struct
+{
+ __cpu_mask __bits[__CPU_SETSIZE / __NCPUBITS];
+} cpu_set_t;
+
+/* Access functions for CPU masks. */
+#if __GNUC_PREREQ (2, 91)
+# define __CPU_ZERO_S(setsize, cpusetp) \
+ do __builtin_memset (cpusetp, '\0', setsize); while (0)
+#else
+# define __CPU_ZERO_S(setsize, cpusetp) \
+ do { \
+ size_t __i; \
+ size_t __imax = (setsize) / sizeof (__cpu_mask); \
+ __cpu_mask *__bits = (cpusetp)->__bits; \
+ for (__i = 0; __i < __imax; ++__i) \
+ __bits[__i] = 0; \
+ } while (0)
+#endif
+#define __CPU_SET_S(cpu, setsize, cpusetp) \
+ (__extension__ \
+ ({ size_t __cpu = (cpu); \
+ __cpu / 8 < (setsize) \
+ ? (((__cpu_mask *) ((cpusetp)->__bits))[__CPUELT (__cpu)] \
+ |= __CPUMASK (__cpu)) \
+ : 0; }))
+#define __CPU_CLR_S(cpu, setsize, cpusetp) \
+ (__extension__ \
+ ({ size_t __cpu = (cpu); \
+ __cpu / 8 < (setsize) \
+ ? (((__cpu_mask *) ((cpusetp)->__bits))[__CPUELT (__cpu)] \
+ &= ~__CPUMASK (__cpu)) \
+ : 0; }))
+#define __CPU_ISSET_S(cpu, setsize, cpusetp) \
+ (__extension__ \
+ ({ size_t __cpu = (cpu); \
+ __cpu / 8 < (setsize) \
+ ? ((((const __cpu_mask *) ((cpusetp)->__bits))[__CPUELT (__cpu)] \
+ & __CPUMASK (__cpu))) != 0 \
+ : 0; }))
+
+#define __CPU_COUNT_S(setsize, cpusetp) \
+ __sched_cpucount (setsize, cpusetp)
+
+#if __GNUC_PREREQ (2, 91)
+# define __CPU_EQUAL_S(setsize, cpusetp1, cpusetp2) \
+ (__builtin_memcmp (cpusetp1, cpusetp2, setsize) == 0)
+#else
+# define __CPU_EQUAL_S(setsize, cpusetp1, cpusetp2) \
+ (__extension__ \
+ ({ const __cpu_mask *__arr1 = (cpusetp1)->__bits; \
+ const __cpu_mask *__arr2 = (cpusetp2)->__bits; \
+ size_t __imax = (setsize) / sizeof (__cpu_mask); \
+ size_t __i; \
+ for (__i = 0; __i < __imax; ++__i) \
+ if (__arr1[__i] != __arr2[__i]) \
+ break; \
+ __i == __imax; }))
+#endif
+
+#define __CPU_OP_S(setsize, destset, srcset1, srcset2, op) \
+ (__extension__ \
+ ({ cpu_set_t *__dest = (destset); \
+ const __cpu_mask *__arr1 = (srcset1)->__bits; \
+ const __cpu_mask *__arr2 = (srcset2)->__bits; \
+ size_t __imax = (setsize) / sizeof (__cpu_mask); \
+ size_t __i; \
+ for (__i = 0; __i < __imax; ++__i) \
+ ((__cpu_mask *) __dest->__bits)[__i] = __arr1[__i] op __arr2[__i]; \
+ __dest; }))
+
+#define __CPU_ALLOC_SIZE(count) \
+ ((((count) + __NCPUBITS - 1) / __NCPUBITS) * sizeof (__cpu_mask))
+#define __CPU_ALLOC(count) __sched_cpualloc (count)
+#define __CPU_FREE(cpuset) __sched_cpufree (cpuset)
+
+__BEGIN_DECLS
+
+extern int __sched_cpucount (size_t __setsize, const cpu_set_t *__setp)
+ __THROW;
+extern cpu_set_t *__sched_cpualloc (size_t __count) __THROW __wur;
+extern void __sched_cpufree (cpu_set_t *__set) __THROW;
+
+__END_DECLS
+
+#endif /* bits/cpu-set.h */
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@cpu-set.h.blob b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@cpu-set.h.blob
new file mode 100644
index 0000000..42edc68
Binary files /dev/null and b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@cpu-set.h.blob differ
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@endian.h b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@endian.h
new file mode 100644
index 0000000..b659a00
--- /dev/null
+++ b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@endian.h
@@ -0,0 +1,49 @@
+/* Endian macros for string.h functions
+ Copyright (C) 1992-2023 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ . */
+
+#ifndef _BITS_ENDIAN_H
+#define _BITS_ENDIAN_H 1
+
+/* Definitions for byte order, according to significance of bytes,
+ from low addresses to high addresses. The value is what you get by
+ putting '4' in the most significant byte, '3' in the second most
+ significant byte, '2' in the second least significant byte, and '1'
+ in the least significant byte, and then writing down one digit for
+ each byte, starting with the byte at the lowest address at the left,
+ and proceeding to the byte with the highest address at the right. */
+
+#define __LITTLE_ENDIAN 1234
+#define __BIG_ENDIAN 4321
+#define __PDP_ENDIAN 3412
+
+/* This file defines `__BYTE_ORDER' for the particular machine. */
+#include
+
+/* Some machines may need to use a different endianness for floating point
+ values. */
+#ifndef __FLOAT_WORD_ORDER
+# define __FLOAT_WORD_ORDER __BYTE_ORDER
+#endif
+
+#if __BYTE_ORDER == __LITTLE_ENDIAN
+# define __LONG_LONG_PAIR(HI, LO) LO, HI
+#elif __BYTE_ORDER == __BIG_ENDIAN
+# define __LONG_LONG_PAIR(HI, LO) HI, LO
+#endif
+
+#endif /* bits/endian.h */
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@endian.h.blob b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@endian.h.blob
new file mode 100644
index 0000000..c6d89ba
Binary files /dev/null and b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@endian.h.blob differ
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@endianness.h b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@endianness.h
new file mode 100644
index 0000000..962a9ae
--- /dev/null
+++ b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@endianness.h
@@ -0,0 +1,11 @@
+#ifndef _BITS_ENDIANNESS_H
+#define _BITS_ENDIANNESS_H 1
+
+#ifndef _BITS_ENDIAN_H
+# error "Never use directly; include instead."
+#endif
+
+/* i386/x86_64 are little-endian. */
+#define __BYTE_ORDER __LITTLE_ENDIAN
+
+#endif /* bits/endianness.h */
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@endianness.h.blob b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@endianness.h.blob
new file mode 100644
index 0000000..bc0418d
Binary files /dev/null and b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@endianness.h.blob differ
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@errno.h b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@errno.h
new file mode 100644
index 0000000..d3d3a98
--- /dev/null
+++ b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@errno.h
@@ -0,0 +1,53 @@
+/* Error constants. Linux specific version.
+ Copyright (C) 1996-2023 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ . */
+
+#ifndef _BITS_ERRNO_H
+#define _BITS_ERRNO_H 1
+
+#if !defined _ERRNO_H
+# error "Never include directly; use instead."
+#endif
+
+# include
+
+/* Older Linux headers do not define these constants. */
+# ifndef ENOTSUP
+# define ENOTSUP EOPNOTSUPP
+# endif
+
+# ifndef ECANCELED
+# define ECANCELED 125
+# endif
+
+# ifndef EOWNERDEAD
+# define EOWNERDEAD 130
+# endif
+
+#ifndef ENOTRECOVERABLE
+# define ENOTRECOVERABLE 131
+# endif
+
+# ifndef ERFKILL
+# define ERFKILL 132
+# endif
+
+# ifndef EHWPOISON
+# define EHWPOISON 133
+# endif
+
+#endif /* bits/errno.h. */
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@errno.h.blob b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@errno.h.blob
new file mode 100644
index 0000000..446c194
Binary files /dev/null and b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@errno.h.blob differ
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@floatn-common.h b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@floatn-common.h
new file mode 100644
index 0000000..23306c9
--- /dev/null
+++ b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@floatn-common.h
@@ -0,0 +1,329 @@
+/* Macros to control TS 18661-3 glibc features where the same
+ definitions are appropriate for all platforms.
+ Copyright (C) 2017-2023 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ . */
+
+#ifndef _BITS_FLOATN_COMMON_H
+#define _BITS_FLOATN_COMMON_H
+
+#include
+#include
+
+/* This header should be included at the bottom of each bits/floatn.h.
+ It defines the following macros for each _FloatN and _FloatNx type,
+ where the same definitions, or definitions based only on the macros
+ in bits/floatn.h, are appropriate for all glibc configurations. */
+
+/* Defined to 1 if the current compiler invocation provides a
+ floating-point type with the right format for this type, and this
+ glibc includes corresponding *fN or *fNx interfaces for it. */
+#define __HAVE_FLOAT16 0
+#define __HAVE_FLOAT32 1
+#define __HAVE_FLOAT64 1
+#define __HAVE_FLOAT32X 1
+#define __HAVE_FLOAT128X 0
+
+/* Defined to 1 if the corresponding __HAVE_ macro is 1 and the
+ type is the first with its format in the sequence of (the default
+ choices for) float, double, long double, _Float16, _Float32,
+ _Float64, _Float128, _Float32x, _Float64x, _Float128x for this
+ glibc; that is, if functions present once per floating-point format
+ rather than once per type are present for this type.
+
+ All configurations supported by glibc have _Float32 the same format
+ as float, _Float64 and _Float32x the same format as double, the
+ _Float64x the same format as either long double or _Float128. No
+ configurations support _Float128x or, as of GCC 7, have compiler
+ support for a type meeting the requirements for _Float128x. */
+#define __HAVE_DISTINCT_FLOAT16 __HAVE_FLOAT16
+#define __HAVE_DISTINCT_FLOAT32 0
+#define __HAVE_DISTINCT_FLOAT64 0
+#define __HAVE_DISTINCT_FLOAT32X 0
+#define __HAVE_DISTINCT_FLOAT64X 0
+#define __HAVE_DISTINCT_FLOAT128X __HAVE_FLOAT128X
+
+/* Defined to 1 if the corresponding _FloatN type is not binary compatible
+ with the corresponding ISO C type in the current compilation unit as
+ opposed to __HAVE_DISTINCT_FLOATN, which indicates the default types built
+ in glibc. */
+#define __HAVE_FLOAT128_UNLIKE_LDBL (__HAVE_DISTINCT_FLOAT128 \
+ && __LDBL_MANT_DIG__ != 113)
+
+/* Defined to 1 if any _FloatN or _FloatNx types that are not
+ ABI-distinct are however distinct types at the C language level (so
+ for the purposes of __builtin_types_compatible_p and _Generic). */
+#if __GNUC_PREREQ (7, 0) && !defined __cplusplus
+# define __HAVE_FLOATN_NOT_TYPEDEF 1
+#else
+# define __HAVE_FLOATN_NOT_TYPEDEF 0
+#endif
+
+#ifndef __ASSEMBLER__
+
+/* Defined to concatenate the literal suffix to be used with _FloatN
+ or _FloatNx types, if __HAVE_ is 1. The corresponding
+ literal suffixes exist since GCC 7, for C only. */
+# if __HAVE_FLOAT16
+# if !__GNUC_PREREQ (7, 0) || (defined __cplusplus && !__GNUC_PREREQ (13, 0))
+/* No corresponding suffix available for this type. */
+# define __f16(x) ((_Float16) x##f)
+# else
+# define __f16(x) x##f16
+# endif
+# endif
+
+# if __HAVE_FLOAT32
+# if !__GNUC_PREREQ (7, 0) || (defined __cplusplus && !__GNUC_PREREQ (13, 0))
+# define __f32(x) x##f
+# else
+# define __f32(x) x##f32
+# endif
+# endif
+
+# if __HAVE_FLOAT64
+# if !__GNUC_PREREQ (7, 0) || (defined __cplusplus && !__GNUC_PREREQ (13, 0))
+# ifdef __NO_LONG_DOUBLE_MATH
+# define __f64(x) x##l
+# else
+# define __f64(x) x
+# endif
+# else
+# define __f64(x) x##f64
+# endif
+# endif
+
+# if __HAVE_FLOAT32X
+# if !__GNUC_PREREQ (7, 0) || (defined __cplusplus && !__GNUC_PREREQ (13, 0))
+# define __f32x(x) x
+# else
+# define __f32x(x) x##f32x
+# endif
+# endif
+
+# if __HAVE_FLOAT64X
+# if !__GNUC_PREREQ (7, 0) || (defined __cplusplus && !__GNUC_PREREQ (13, 0))
+# if __HAVE_FLOAT64X_LONG_DOUBLE
+# define __f64x(x) x##l
+# else
+# define __f64x(x) __f128 (x)
+# endif
+# else
+# define __f64x(x) x##f64x
+# endif
+# endif
+
+# if __HAVE_FLOAT128X
+# if !__GNUC_PREREQ (7, 0) || (defined __cplusplus && !__GNUC_PREREQ (13, 0))
+# error "_Float128X supported but no constant suffix"
+# else
+# define __f128x(x) x##f128x
+# endif
+# endif
+
+/* Defined to a complex type if __HAVE_ is 1. */
+# if __HAVE_FLOAT16
+# if !__GNUC_PREREQ (7, 0) || (defined __cplusplus && !__GNUC_PREREQ (13, 0))
+typedef _Complex float __cfloat16 __attribute__ ((__mode__ (__HC__)));
+# define __CFLOAT16 __cfloat16
+# else
+# define __CFLOAT16 _Complex _Float16
+# endif
+# endif
+
+# if __HAVE_FLOAT32
+# if !__GNUC_PREREQ (7, 0) || (defined __cplusplus && !__GNUC_PREREQ (13, 0))
+# define __CFLOAT32 _Complex float
+# else
+# define __CFLOAT32 _Complex _Float32
+# endif
+# endif
+
+# if __HAVE_FLOAT64
+# if !__GNUC_PREREQ (7, 0) || (defined __cplusplus && !__GNUC_PREREQ (13, 0))
+# ifdef __NO_LONG_DOUBLE_MATH
+# define __CFLOAT64 _Complex long double
+# else
+# define __CFLOAT64 _Complex double
+# endif
+# else
+# define __CFLOAT64 _Complex _Float64
+# endif
+# endif
+
+# if __HAVE_FLOAT32X
+# if !__GNUC_PREREQ (7, 0) || (defined __cplusplus && !__GNUC_PREREQ (13, 0))
+# define __CFLOAT32X _Complex double
+# else
+# define __CFLOAT32X _Complex _Float32x
+# endif
+# endif
+
+# if __HAVE_FLOAT64X
+# if !__GNUC_PREREQ (7, 0) || (defined __cplusplus && !__GNUC_PREREQ (13, 0))
+# if __HAVE_FLOAT64X_LONG_DOUBLE
+# define __CFLOAT64X _Complex long double
+# else
+# define __CFLOAT64X __CFLOAT128
+# endif
+# else
+# define __CFLOAT64X _Complex _Float64x
+# endif
+# endif
+
+# if __HAVE_FLOAT128X
+# if !__GNUC_PREREQ (7, 0) || (defined __cplusplus && !__GNUC_PREREQ (13, 0))
+# error "_Float128X supported but no complex type"
+# else
+# define __CFLOAT128X _Complex _Float128x
+# endif
+# endif
+
+/* The remaining of this file provides support for older compilers. */
+# if __HAVE_FLOAT16
+
+# if !__GNUC_PREREQ (7, 0) || (defined __cplusplus && !__GNUC_PREREQ (13, 0))
+typedef float _Float16 __attribute__ ((__mode__ (__HF__)));
+# endif
+
+# if !__GNUC_PREREQ (7, 0)
+# define __builtin_huge_valf16() ((_Float16) __builtin_huge_val ())
+# define __builtin_inff16() ((_Float16) __builtin_inf ())
+# define __builtin_nanf16(x) ((_Float16) __builtin_nan (x))
+# define __builtin_nansf16(x) ((_Float16) __builtin_nans (x))
+# endif
+
+# endif
+
+# if __HAVE_FLOAT32
+
+# if !__GNUC_PREREQ (7, 0) || (defined __cplusplus && !__GNUC_PREREQ (13, 0))
+typedef float _Float32;
+# endif
+
+# if !__GNUC_PREREQ (7, 0)
+# define __builtin_huge_valf32() (__builtin_huge_valf ())
+# define __builtin_inff32() (__builtin_inff ())
+# define __builtin_nanf32(x) (__builtin_nanf (x))
+# define __builtin_nansf32(x) (__builtin_nansf (x))
+# endif
+
+# endif
+
+# if __HAVE_FLOAT64
+
+/* If double, long double and _Float64 all have the same set of
+ values, TS 18661-3 requires the usual arithmetic conversions on
+ long double and _Float64 to produce _Float64. For this to be the
+ case when building with a compiler without a distinct _Float64
+ type, _Float64 must be a typedef for long double, not for
+ double. */
+
+# ifdef __NO_LONG_DOUBLE_MATH
+
+# if !__GNUC_PREREQ (7, 0) || (defined __cplusplus && !__GNUC_PREREQ (13, 0))
+typedef long double _Float64;
+# endif
+
+# if !__GNUC_PREREQ (7, 0)
+# define __builtin_huge_valf64() (__builtin_huge_vall ())
+# define __builtin_inff64() (__builtin_infl ())
+# define __builtin_nanf64(x) (__builtin_nanl (x))
+# define __builtin_nansf64(x) (__builtin_nansl (x))
+# endif
+
+# else
+
+# if !__GNUC_PREREQ (7, 0) || (defined __cplusplus && !__GNUC_PREREQ (13, 0))
+typedef double _Float64;
+# endif
+
+# if !__GNUC_PREREQ (7, 0)
+# define __builtin_huge_valf64() (__builtin_huge_val ())
+# define __builtin_inff64() (__builtin_inf ())
+# define __builtin_nanf64(x) (__builtin_nan (x))
+# define __builtin_nansf64(x) (__builtin_nans (x))
+# endif
+
+# endif
+
+# endif
+
+# if __HAVE_FLOAT32X
+
+# if !__GNUC_PREREQ (7, 0) || (defined __cplusplus && !__GNUC_PREREQ (13, 0))
+typedef double _Float32x;
+# endif
+
+# if !__GNUC_PREREQ (7, 0)
+# define __builtin_huge_valf32x() (__builtin_huge_val ())
+# define __builtin_inff32x() (__builtin_inf ())
+# define __builtin_nanf32x(x) (__builtin_nan (x))
+# define __builtin_nansf32x(x) (__builtin_nans (x))
+# endif
+
+# endif
+
+# if __HAVE_FLOAT64X
+
+# if __HAVE_FLOAT64X_LONG_DOUBLE
+
+# if !__GNUC_PREREQ (7, 0) || (defined __cplusplus && !__GNUC_PREREQ (13, 0))
+typedef long double _Float64x;
+# endif
+
+# if !__GNUC_PREREQ (7, 0)
+# define __builtin_huge_valf64x() (__builtin_huge_vall ())
+# define __builtin_inff64x() (__builtin_infl ())
+# define __builtin_nanf64x(x) (__builtin_nanl (x))
+# define __builtin_nansf64x(x) (__builtin_nansl (x))
+# endif
+
+# else
+
+# if !__GNUC_PREREQ (7, 0) || (defined __cplusplus && !__GNUC_PREREQ (13, 0))
+typedef _Float128 _Float64x;
+# endif
+
+# if !__GNUC_PREREQ (7, 0)
+# define __builtin_huge_valf64x() (__builtin_huge_valf128 ())
+# define __builtin_inff64x() (__builtin_inff128 ())
+# define __builtin_nanf64x(x) (__builtin_nanf128 (x))
+# define __builtin_nansf64x(x) (__builtin_nansf128 (x))
+# endif
+
+# endif
+
+# endif
+
+# if __HAVE_FLOAT128X
+
+# if !__GNUC_PREREQ (7, 0) || (defined __cplusplus && !__GNUC_PREREQ (13, 0))
+# error "_Float128x supported but no type"
+# endif
+
+# if !__GNUC_PREREQ (7, 0)
+# define __builtin_huge_valf128x() ((_Float128x) __builtin_huge_val ())
+# define __builtin_inff128x() ((_Float128x) __builtin_inf ())
+# define __builtin_nanf128x(x) ((_Float128x) __builtin_nan (x))
+# define __builtin_nansf128x(x) ((_Float128x) __builtin_nans (x))
+# endif
+
+# endif
+
+#endif /* !__ASSEMBLER__. */
+
+#endif /* _BITS_FLOATN_COMMON_H */
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@floatn-common.h.blob b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@floatn-common.h.blob
new file mode 100644
index 0000000..561fac7
Binary files /dev/null and b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@floatn-common.h.blob differ
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@floatn.h b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@floatn.h
new file mode 100644
index 0000000..f7f3d05
--- /dev/null
+++ b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@floatn.h
@@ -0,0 +1,121 @@
+/* Macros to control TS 18661-3 glibc features on x86.
+ Copyright (C) 2017-2023 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ . */
+
+#ifndef _BITS_FLOATN_H
+#define _BITS_FLOATN_H
+
+#include
+
+/* Defined to 1 if the current compiler invocation provides a
+ floating-point type with the IEEE 754 binary128 format, and this
+ glibc includes corresponding *f128 interfaces for it. The required
+ libgcc support was added some time after the basic compiler
+ support, for x86_64 and x86. */
+#if (defined __x86_64__ \
+ ? __GNUC_PREREQ (4, 3) \
+ : (defined __GNU__ ? __GNUC_PREREQ (4, 5) : __GNUC_PREREQ (4, 4)))
+# define __HAVE_FLOAT128 1
+#else
+# define __HAVE_FLOAT128 0
+#endif
+
+/* Defined to 1 if __HAVE_FLOAT128 is 1 and the type is ABI-distinct
+ from the default float, double and long double types in this glibc. */
+#if __HAVE_FLOAT128
+# define __HAVE_DISTINCT_FLOAT128 1
+#else
+# define __HAVE_DISTINCT_FLOAT128 0
+#endif
+
+/* Defined to 1 if the current compiler invocation provides a
+ floating-point type with the right format for _Float64x, and this
+ glibc includes corresponding *f64x interfaces for it. */
+#define __HAVE_FLOAT64X 1
+
+/* Defined to 1 if __HAVE_FLOAT64X is 1 and _Float64x has the format
+ of long double. Otherwise, if __HAVE_FLOAT64X is 1, _Float64x has
+ the format of _Float128, which must be different from that of long
+ double. */
+#define __HAVE_FLOAT64X_LONG_DOUBLE 1
+
+#ifndef __ASSEMBLER__
+
+/* Defined to concatenate the literal suffix to be used with _Float128
+ types, if __HAVE_FLOAT128 is 1. */
+# if __HAVE_FLOAT128
+# if !__GNUC_PREREQ (7, 0) || (defined __cplusplus && !__GNUC_PREREQ (13, 0))
+/* The literal suffix f128 exists only since GCC 7.0. */
+# define __f128(x) x##q
+# else
+# define __f128(x) x##f128
+# endif
+# endif
+
+/* Defined to a complex binary128 type if __HAVE_FLOAT128 is 1. */
+# if __HAVE_FLOAT128
+# if !__GNUC_PREREQ (7, 0) || (defined __cplusplus && !__GNUC_PREREQ (13, 0))
+/* Add a typedef for older GCC compilers which don't natively support
+ _Complex _Float128. */
+typedef _Complex float __cfloat128 __attribute__ ((__mode__ (__TC__)));
+# define __CFLOAT128 __cfloat128
+# else
+# define __CFLOAT128 _Complex _Float128
+# endif
+# endif
+
+/* The remaining of this file provides support for older compilers. */
+# if __HAVE_FLOAT128
+
+/* The type _Float128 exists only since GCC 7.0. */
+# if !__GNUC_PREREQ (7, 0) || (defined __cplusplus && !__GNUC_PREREQ (13, 0))
+typedef __float128 _Float128;
+# endif
+
+/* __builtin_huge_valf128 doesn't exist before GCC 7.0. */
+# if !__GNUC_PREREQ (7, 0)
+# define __builtin_huge_valf128() ((_Float128) __builtin_huge_val ())
+# endif
+
+/* Older GCC has only a subset of built-in functions for _Float128 on
+ x86, and __builtin_infq is not usable in static initializers.
+ Converting a narrower sNaN to _Float128 produces a quiet NaN, so
+ attempts to use _Float128 sNaNs will not work properly with older
+ compilers. */
+# if !__GNUC_PREREQ (7, 0)
+# define __builtin_copysignf128 __builtin_copysignq
+# define __builtin_fabsf128 __builtin_fabsq
+# define __builtin_inff128() ((_Float128) __builtin_inf ())
+# define __builtin_nanf128(x) ((_Float128) __builtin_nan (x))
+# define __builtin_nansf128(x) ((_Float128) __builtin_nans (x))
+# endif
+
+/* In math/math.h, __MATH_TG will expand signbit to __builtin_signbit*,
+ e.g.: __builtin_signbitf128, before GCC 6. However, there has never
+ been a __builtin_signbitf128 in GCC and the type-generic builtin is
+ only available since GCC 6. */
+# if !__GNUC_PREREQ (6, 0)
+# define __builtin_signbitf128 __signbitf128
+# endif
+
+# endif
+
+#endif /* !__ASSEMBLER__. */
+
+#include
+
+#endif /* _BITS_FLOATN_H */
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@floatn.h.blob b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@floatn.h.blob
new file mode 100644
index 0000000..1f74487
Binary files /dev/null and b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@floatn.h.blob differ
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@libc-header-start.h b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@libc-header-start.h
new file mode 100644
index 0000000..73af2af
--- /dev/null
+++ b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@libc-header-start.h
@@ -0,0 +1,110 @@
+/* Handle feature test macros at the start of a header.
+ Copyright (C) 2016-2023 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ . */
+
+/* This header is internal to glibc and should not be included outside
+ of glibc headers. Headers including it must define
+ __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION first. This header
+ cannot have multiple include guards because ISO C feature test
+ macros depend on the definition of the macro when an affected
+ header is included, not when the first system header is
+ included. */
+
+#ifndef __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION
+# error "Never include directly."
+#endif
+
+#undef __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION
+
+#include
+
+/* ISO/IEC TR 24731-2:2010 defines the __STDC_WANT_LIB_EXT2__
+ macro. */
+#undef __GLIBC_USE_LIB_EXT2
+#if (defined __USE_GNU \
+ || (defined __STDC_WANT_LIB_EXT2__ && __STDC_WANT_LIB_EXT2__ > 0))
+# define __GLIBC_USE_LIB_EXT2 1
+#else
+# define __GLIBC_USE_LIB_EXT2 0
+#endif
+
+/* ISO/IEC TS 18661-1:2014 defines the __STDC_WANT_IEC_60559_BFP_EXT__
+ macro. Most but not all symbols enabled by that macro in TS
+ 18661-1 are enabled unconditionally in C2X. In C2X, the symbols in
+ Annex F still require a new feature test macro
+ __STDC_WANT_IEC_60559_EXT__ instead (C2X does not define
+ __STDC_WANT_IEC_60559_BFP_EXT__), while a few features from TS
+ 18661-1 are not included in C2X (and thus should depend on
+ __STDC_WANT_IEC_60559_BFP_EXT__ even when C2X features are
+ enabled).
+
+ __GLIBC_USE (IEC_60559_BFP_EXT) controls those features from TS
+ 18661-1 not included in C2X.
+
+ __GLIBC_USE (IEC_60559_BFP_EXT_C2X) controls those features from TS
+ 18661-1 that are also included in C2X (with no feature test macro
+ required in C2X).
+
+ __GLIBC_USE (IEC_60559_EXT) controls those features from TS 18661-1
+ that are included in C2X but conditional on
+ __STDC_WANT_IEC_60559_EXT__. (There are currently no features
+ conditional on __STDC_WANT_IEC_60559_EXT__ that are not in TS
+ 18661-1.) */
+#undef __GLIBC_USE_IEC_60559_BFP_EXT
+#if defined __USE_GNU || defined __STDC_WANT_IEC_60559_BFP_EXT__
+# define __GLIBC_USE_IEC_60559_BFP_EXT 1
+#else
+# define __GLIBC_USE_IEC_60559_BFP_EXT 0
+#endif
+#undef __GLIBC_USE_IEC_60559_BFP_EXT_C2X
+#if __GLIBC_USE (IEC_60559_BFP_EXT) || __GLIBC_USE (ISOC2X)
+# define __GLIBC_USE_IEC_60559_BFP_EXT_C2X 1
+#else
+# define __GLIBC_USE_IEC_60559_BFP_EXT_C2X 0
+#endif
+#undef __GLIBC_USE_IEC_60559_EXT
+#if __GLIBC_USE (IEC_60559_BFP_EXT) || defined __STDC_WANT_IEC_60559_EXT__
+# define __GLIBC_USE_IEC_60559_EXT 1
+#else
+# define __GLIBC_USE_IEC_60559_EXT 0
+#endif
+
+/* ISO/IEC TS 18661-4:2015 defines the
+ __STDC_WANT_IEC_60559_FUNCS_EXT__ macro. Other than the reduction
+ functions, the symbols from this TS are enabled unconditionally in
+ C2X. */
+#undef __GLIBC_USE_IEC_60559_FUNCS_EXT
+#if defined __USE_GNU || defined __STDC_WANT_IEC_60559_FUNCS_EXT__
+# define __GLIBC_USE_IEC_60559_FUNCS_EXT 1
+#else
+# define __GLIBC_USE_IEC_60559_FUNCS_EXT 0
+#endif
+#undef __GLIBC_USE_IEC_60559_FUNCS_EXT_C2X
+#if __GLIBC_USE (IEC_60559_FUNCS_EXT) || __GLIBC_USE (ISOC2X)
+# define __GLIBC_USE_IEC_60559_FUNCS_EXT_C2X 1
+#else
+# define __GLIBC_USE_IEC_60559_FUNCS_EXT_C2X 0
+#endif
+
+/* ISO/IEC TS 18661-3:2015 defines the
+ __STDC_WANT_IEC_60559_TYPES_EXT__ macro. */
+#undef __GLIBC_USE_IEC_60559_TYPES_EXT
+#if defined __USE_GNU || defined __STDC_WANT_IEC_60559_TYPES_EXT__
+# define __GLIBC_USE_IEC_60559_TYPES_EXT 1
+#else
+# define __GLIBC_USE_IEC_60559_TYPES_EXT 0
+#endif
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@libc-header-start.h.blob b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@libc-header-start.h.blob
new file mode 100644
index 0000000..2ddcc8d
Binary files /dev/null and b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@libc-header-start.h.blob differ
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@locale.h b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@locale.h
new file mode 100644
index 0000000..4487c12
--- /dev/null
+++ b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@locale.h
@@ -0,0 +1,40 @@
+/* Definition of locale category symbol values.
+ Copyright (C) 2001-2023 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ . */
+
+#if !defined _LOCALE_H && !defined _LANGINFO_H
+# error "Never use directly; include instead."
+#endif
+
+#ifndef _BITS_LOCALE_H
+#define _BITS_LOCALE_H 1
+
+#define __LC_CTYPE 0
+#define __LC_NUMERIC 1
+#define __LC_TIME 2
+#define __LC_COLLATE 3
+#define __LC_MONETARY 4
+#define __LC_MESSAGES 5
+#define __LC_ALL 6
+#define __LC_PAPER 7
+#define __LC_NAME 8
+#define __LC_ADDRESS 9
+#define __LC_TELEPHONE 10
+#define __LC_MEASUREMENT 11
+#define __LC_IDENTIFICATION 12
+
+#endif /* bits/locale.h */
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@locale.h.blob b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@locale.h.blob
new file mode 100644
index 0000000..bac4593
Binary files /dev/null and b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@locale.h.blob differ
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@long-double.h b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@long-double.h
new file mode 100644
index 0000000..214d443
--- /dev/null
+++ b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@long-double.h
@@ -0,0 +1,21 @@
+/* Properties of long double type. ldbl-96 version.
+ Copyright (C) 2016-2023 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ . */
+
+/* long double is distinct from double, so there is nothing to
+ define here. */
+#define __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI 0
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@long-double.h.blob b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@long-double.h.blob
new file mode 100644
index 0000000..f4b4d4b
Binary files /dev/null and b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@long-double.h.blob differ
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@pthread_stack_min-dynamic.h b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@pthread_stack_min-dynamic.h
new file mode 100644
index 0000000..be0a66b
--- /dev/null
+++ b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@pthread_stack_min-dynamic.h
@@ -0,0 +1,31 @@
+/* Definition of PTHREAD_STACK_MIN, possibly dynamic.
+ Copyright (C) 2021-2023 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ . */
+
+#ifndef PTHREAD_STACK_MIN
+# if defined __USE_DYNAMIC_STACK_SIZE && __USE_DYNAMIC_STACK_SIZE
+# ifndef __ASSEMBLER__
+# define __SC_THREAD_STACK_MIN_VALUE 75
+__BEGIN_DECLS
+extern long int __sysconf (int __name) __THROW;
+__END_DECLS
+# define PTHREAD_STACK_MIN __sysconf (__SC_THREAD_STACK_MIN_VALUE)
+# endif
+# else
+# include
+# endif
+#endif
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@pthread_stack_min-dynamic.h.blob b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@pthread_stack_min-dynamic.h.blob
new file mode 100644
index 0000000..2f808e8
Binary files /dev/null and b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@pthread_stack_min-dynamic.h.blob differ
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@pthreadtypes-arch.h b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@pthreadtypes-arch.h
new file mode 100644
index 0000000..20b3854
--- /dev/null
+++ b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@pthreadtypes-arch.h
@@ -0,0 +1,55 @@
+/* Copyright (C) 2002-2023 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ . */
+
+#ifndef _BITS_PTHREADTYPES_ARCH_H
+#define _BITS_PTHREADTYPES_ARCH_H 1
+
+#include
+
+#ifdef __x86_64__
+# if __WORDSIZE == 64
+# define __SIZEOF_PTHREAD_MUTEX_T 40
+# define __SIZEOF_PTHREAD_ATTR_T 56
+# define __SIZEOF_PTHREAD_RWLOCK_T 56
+# define __SIZEOF_PTHREAD_BARRIER_T 32
+# else
+# define __SIZEOF_PTHREAD_MUTEX_T 32
+# define __SIZEOF_PTHREAD_ATTR_T 32
+# define __SIZEOF_PTHREAD_RWLOCK_T 44
+# define __SIZEOF_PTHREAD_BARRIER_T 20
+# endif
+#else
+# define __SIZEOF_PTHREAD_MUTEX_T 24
+# define __SIZEOF_PTHREAD_ATTR_T 36
+# define __SIZEOF_PTHREAD_RWLOCK_T 32
+# define __SIZEOF_PTHREAD_BARRIER_T 20
+#endif
+#define __SIZEOF_PTHREAD_MUTEXATTR_T 4
+#define __SIZEOF_PTHREAD_COND_T 48
+#define __SIZEOF_PTHREAD_CONDATTR_T 4
+#define __SIZEOF_PTHREAD_RWLOCKATTR_T 8
+#define __SIZEOF_PTHREAD_BARRIERATTR_T 4
+
+#define __LOCK_ALIGNMENT
+#define __ONCE_ALIGNMENT
+
+#ifndef __x86_64__
+/* Extra attributes for the cleanup functions. */
+# define __cleanup_fct_attribute __attribute__ ((__regparm__ (1)))
+#endif
+
+#endif /* bits/pthreadtypes.h */
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@pthreadtypes-arch.h.blob b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@pthreadtypes-arch.h.blob
new file mode 100644
index 0000000..901327b
Binary files /dev/null and b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@pthreadtypes-arch.h.blob differ
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@pthreadtypes.h b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@pthreadtypes.h
new file mode 100644
index 0000000..65464ee
--- /dev/null
+++ b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@pthreadtypes.h
@@ -0,0 +1,121 @@
+/* Declaration of common pthread types for all architectures.
+ Copyright (C) 2017-2023 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ . */
+
+#ifndef _BITS_PTHREADTYPES_COMMON_H
+# define _BITS_PTHREADTYPES_COMMON_H 1
+
+/* For internal mutex and condition variable definitions. */
+#include
+
+/* Thread identifiers. The structure of the attribute type is not
+ exposed on purpose. */
+typedef unsigned long int pthread_t;
+
+
+/* Data structures for mutex handling. The structure of the attribute
+ type is not exposed on purpose. */
+typedef union
+{
+ char __size[__SIZEOF_PTHREAD_MUTEXATTR_T];
+ int __align;
+} pthread_mutexattr_t;
+
+
+/* Data structure for condition variable handling. The structure of
+ the attribute type is not exposed on purpose. */
+typedef union
+{
+ char __size[__SIZEOF_PTHREAD_CONDATTR_T];
+ int __align;
+} pthread_condattr_t;
+
+
+/* Keys for thread-specific data */
+typedef unsigned int pthread_key_t;
+
+
+/* Once-only execution */
+typedef int __ONCE_ALIGNMENT pthread_once_t;
+
+
+union pthread_attr_t
+{
+ char __size[__SIZEOF_PTHREAD_ATTR_T];
+ long int __align;
+};
+#ifndef __have_pthread_attr_t
+typedef union pthread_attr_t pthread_attr_t;
+# define __have_pthread_attr_t 1
+#endif
+
+
+typedef union
+{
+ struct __pthread_mutex_s __data;
+ char __size[__SIZEOF_PTHREAD_MUTEX_T];
+ long int __align;
+} pthread_mutex_t;
+
+
+typedef union
+{
+ struct __pthread_cond_s __data;
+ char __size[__SIZEOF_PTHREAD_COND_T];
+ __extension__ long long int __align;
+} pthread_cond_t;
+
+
+#if defined __USE_UNIX98 || defined __USE_XOPEN2K
+/* Data structure for reader-writer lock variable handling. The
+ structure of the attribute type is deliberately not exposed. */
+typedef union
+{
+ struct __pthread_rwlock_arch_t __data;
+ char __size[__SIZEOF_PTHREAD_RWLOCK_T];
+ long int __align;
+} pthread_rwlock_t;
+
+typedef union
+{
+ char __size[__SIZEOF_PTHREAD_RWLOCKATTR_T];
+ long int __align;
+} pthread_rwlockattr_t;
+#endif
+
+
+#ifdef __USE_XOPEN2K
+/* POSIX spinlock data type. */
+typedef volatile int pthread_spinlock_t;
+
+
+/* POSIX barriers data type. The structure of the type is
+ deliberately not exposed. */
+typedef union
+{
+ char __size[__SIZEOF_PTHREAD_BARRIER_T];
+ long int __align;
+} pthread_barrier_t;
+
+typedef union
+{
+ char __size[__SIZEOF_PTHREAD_BARRIERATTR_T];
+ int __align;
+} pthread_barrierattr_t;
+#endif
+
+#endif
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@pthreadtypes.h.blob b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@pthreadtypes.h.blob
new file mode 100644
index 0000000..7f0e6cc
Binary files /dev/null and b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@pthreadtypes.h.blob differ
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@sched.h b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@sched.h
new file mode 100644
index 0000000..302a5ee
--- /dev/null
+++ b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@sched.h
@@ -0,0 +1,104 @@
+/* Definitions of constants and data structure for POSIX 1003.1b-1993
+ scheduling interface.
+ Copyright (C) 1996-2023 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ . */
+
+#ifndef _BITS_SCHED_H
+#define _BITS_SCHED_H 1
+
+#ifndef _SCHED_H
+# error "Never include directly; use instead."
+#endif
+
+/* Scheduling algorithms. */
+#define SCHED_OTHER 0
+#define SCHED_FIFO 1
+#define SCHED_RR 2
+#ifdef __USE_GNU
+# define SCHED_BATCH 3
+# define SCHED_ISO 4
+# define SCHED_IDLE 5
+# define SCHED_DEADLINE 6
+
+# define SCHED_RESET_ON_FORK 0x40000000
+#endif
+
+#ifdef __USE_GNU
+/* Cloning flags. */
+# define CSIGNAL 0x000000ff /* Signal mask to be sent at exit. */
+# define CLONE_VM 0x00000100 /* Set if VM shared between processes. */
+# define CLONE_FS 0x00000200 /* Set if fs info shared between processes. */
+# define CLONE_FILES 0x00000400 /* Set if open files shared between processes. */
+# define CLONE_SIGHAND 0x00000800 /* Set if signal handlers shared. */
+# define CLONE_PIDFD 0x00001000 /* Set if a pidfd should be placed
+ in parent. */
+# define CLONE_PTRACE 0x00002000 /* Set if tracing continues on the child. */
+# define CLONE_VFORK 0x00004000 /* Set if the parent wants the child to
+ wake it up on mm_release. */
+# define CLONE_PARENT 0x00008000 /* Set if we want to have the same
+ parent as the cloner. */
+# define CLONE_THREAD 0x00010000 /* Set to add to same thread group. */
+# define CLONE_NEWNS 0x00020000 /* Set to create new namespace. */
+# define CLONE_SYSVSEM 0x00040000 /* Set to shared SVID SEM_UNDO semantics. */
+# define CLONE_SETTLS 0x00080000 /* Set TLS info. */
+# define CLONE_PARENT_SETTID 0x00100000 /* Store TID in userlevel buffer
+ before MM copy. */
+# define CLONE_CHILD_CLEARTID 0x00200000 /* Register exit futex and memory
+ location to clear. */
+# define CLONE_DETACHED 0x00400000 /* Create clone detached. */
+# define CLONE_UNTRACED 0x00800000 /* Set if the tracing process can't
+ force CLONE_PTRACE on this clone. */
+# define CLONE_CHILD_SETTID 0x01000000 /* Store TID in userlevel buffer in
+ the child. */
+# define CLONE_NEWCGROUP 0x02000000 /* New cgroup namespace. */
+# define CLONE_NEWUTS 0x04000000 /* New utsname group. */
+# define CLONE_NEWIPC 0x08000000 /* New ipcs. */
+# define CLONE_NEWUSER 0x10000000 /* New user namespace. */
+# define CLONE_NEWPID 0x20000000 /* New pid namespace. */
+# define CLONE_NEWNET 0x40000000 /* New network namespace. */
+# define CLONE_IO 0x80000000 /* Clone I/O context. */
+
+/* cloning flags intersect with CSIGNAL so can be used only with unshare and
+ clone3 syscalls. */
+#define CLONE_NEWTIME 0x00000080 /* New time namespace */
+#endif
+
+#include
+
+__BEGIN_DECLS
+
+#ifdef __USE_GNU
+/* Clone current process. */
+extern int clone (int (*__fn) (void *__arg), void *__child_stack,
+ int __flags, void *__arg, ...) __THROW;
+
+/* Unshare the specified resources. */
+extern int unshare (int __flags) __THROW;
+
+/* Get index of currently used CPU. */
+extern int sched_getcpu (void) __THROW;
+
+/* Get currently used CPU and NUMA node. */
+extern int getcpu (unsigned int *, unsigned int *) __THROW;
+
+/* Switch process to namespace of type NSTYPE indicated by FD. */
+extern int setns (int __fd, int __nstype) __THROW;
+#endif
+
+__END_DECLS
+
+#endif /* bits/sched.h */
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@sched.h.blob b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@sched.h.blob
new file mode 100644
index 0000000..bc52797
Binary files /dev/null and b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@sched.h.blob differ
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@select.h b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@select.h
new file mode 100644
index 0000000..061d67f
--- /dev/null
+++ b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@select.h
@@ -0,0 +1,37 @@
+/* Copyright (C) 1997-2023 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ . */
+
+#ifndef _SYS_SELECT_H
+# error "Never use directly; include instead."
+#endif
+
+
+/* We don't use `memset' because this would require a prototype and
+ the array isn't too big. */
+#define __FD_ZERO(s) \
+ do { \
+ unsigned int __i; \
+ fd_set *__arr = (s); \
+ for (__i = 0; __i < sizeof (fd_set) / sizeof (__fd_mask); ++__i) \
+ __FDS_BITS (__arr)[__i] = 0; \
+ } while (0)
+#define __FD_SET(d, s) \
+ ((void) (__FDS_BITS (s)[__FD_ELT(d)] |= __FD_MASK(d)))
+#define __FD_CLR(d, s) \
+ ((void) (__FDS_BITS (s)[__FD_ELT(d)] &= ~__FD_MASK(d)))
+#define __FD_ISSET(d, s) \
+ ((__FDS_BITS (s)[__FD_ELT (d)] & __FD_MASK (d)) != 0)
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@select.h.blob b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@select.h.blob
new file mode 100644
index 0000000..70e9b85
Binary files /dev/null and b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@select.h.blob differ
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@setjmp.h b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@setjmp.h
new file mode 100644
index 0000000..353ba1d
--- /dev/null
+++ b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@setjmp.h
@@ -0,0 +1,40 @@
+/* Copyright (C) 2001-2023 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ . */
+
+/* Define the machine-dependent type `jmp_buf'. x86-64 version. */
+#ifndef _BITS_SETJMP_H
+#define _BITS_SETJMP_H 1
+
+#if !defined _SETJMP_H && !defined _PTHREAD_H
+# error "Never include directly; use instead."
+#endif
+
+#include
+
+#ifndef _ASM
+
+# if __WORDSIZE == 64
+typedef long int __jmp_buf[8];
+# elif defined __x86_64__
+__extension__ typedef long long int __jmp_buf[8];
+# else
+typedef int __jmp_buf[6];
+# endif
+
+#endif
+
+#endif /* bits/setjmp.h */
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@setjmp.h.blob b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@setjmp.h.blob
new file mode 100644
index 0000000..73405f5
Binary files /dev/null and b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@setjmp.h.blob differ
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@stdint-intn.h b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@stdint-intn.h
new file mode 100644
index 0000000..3d943a8
--- /dev/null
+++ b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@stdint-intn.h
@@ -0,0 +1,29 @@
+/* Define intN_t types.
+ Copyright (C) 2017-2023 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ . */
+
+#ifndef _BITS_STDINT_INTN_H
+#define _BITS_STDINT_INTN_H 1
+
+#include
+
+typedef __int8_t int8_t;
+typedef __int16_t int16_t;
+typedef __int32_t int32_t;
+typedef __int64_t int64_t;
+
+#endif /* bits/stdint-intn.h */
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@stdint-intn.h.blob b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@stdint-intn.h.blob
new file mode 100644
index 0000000..97717f2
Binary files /dev/null and b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@stdint-intn.h.blob differ
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@stdio_lim.h b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@stdio_lim.h
new file mode 100644
index 0000000..fc40677
--- /dev/null
+++ b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@stdio_lim.h
@@ -0,0 +1,39 @@
+/* Copyright (C) 1994-2023 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ . */
+
+#ifndef _BITS_STDIO_LIM_H
+#define _BITS_STDIO_LIM_H 1
+
+#ifndef _STDIO_H
+# error "Never include directly; use instead."
+#endif
+
+#define L_tmpnam 20
+#define TMP_MAX 238328
+#define FILENAME_MAX 4096
+
+#ifdef __USE_POSIX
+# define L_ctermid 9
+# if !defined __USE_XOPEN2K || defined __USE_GNU
+# define L_cuserid 9
+# endif
+#endif
+
+#undef FOPEN_MAX
+#define FOPEN_MAX 16
+
+#endif /* bits/stdio_lim.h */
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@stdio_lim.h.blob b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@stdio_lim.h.blob
new file mode 100644
index 0000000..74fbc38
Binary files /dev/null and b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@stdio_lim.h.blob differ
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@stdlib-float.h b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@stdlib-float.h
new file mode 100644
index 0000000..b16d0bb
--- /dev/null
+++ b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@stdlib-float.h
@@ -0,0 +1,29 @@
+/* Floating-point inline functions for stdlib.h.
+ Copyright (C) 2012-2023 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ . */
+
+#ifndef _STDLIB_H
+# error "Never use directly; include instead."
+#endif
+
+#ifdef __USE_EXTERN_INLINES
+__extern_inline double
+__NTH (atof (const char *__nptr))
+{
+ return strtod (__nptr, (char **) NULL);
+}
+#endif /* Optimizing and Inlining. */
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@stdlib-float.h.blob b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@stdlib-float.h.blob
new file mode 100644
index 0000000..b8a6f15
Binary files /dev/null and b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@stdlib-float.h.blob differ
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@struct_mutex.h b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@struct_mutex.h
new file mode 100644
index 0000000..ac1ff8d
--- /dev/null
+++ b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@struct_mutex.h
@@ -0,0 +1,63 @@
+/* x86 internal mutex struct definitions.
+ Copyright (C) 2019-2023 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ . */
+
+#ifndef _THREAD_MUTEX_INTERNAL_H
+#define _THREAD_MUTEX_INTERNAL_H 1
+
+struct __pthread_mutex_s
+{
+ int __lock;
+ unsigned int __count;
+ int __owner;
+#ifdef __x86_64__
+ unsigned int __nusers;
+#endif
+ /* KIND must stay at this position in the structure to maintain
+ binary compatibility with static initializers. */
+ int __kind;
+#ifdef __x86_64__
+ short __spins;
+ short __elision;
+ __pthread_list_t __list;
+# define __PTHREAD_MUTEX_HAVE_PREV 1
+#else
+ unsigned int __nusers;
+ __extension__ union
+ {
+ struct
+ {
+ short __espins;
+ short __eelision;
+# define __spins __elision_data.__espins
+# define __elision __elision_data.__eelision
+ } __elision_data;
+ __pthread_slist_t __list;
+ };
+# define __PTHREAD_MUTEX_HAVE_PREV 0
+#endif
+};
+
+#ifdef __x86_64__
+# define __PTHREAD_MUTEX_INITIALIZER(__kind) \
+ 0, 0, 0, 0, __kind, 0, 0, { 0, 0 }
+#else
+# define __PTHREAD_MUTEX_INITIALIZER(__kind) \
+ 0, 0, 0, __kind, 0, { { 0, 0 } }
+#endif
+
+#endif
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@struct_mutex.h.blob b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@struct_mutex.h.blob
new file mode 100644
index 0000000..d415dce
Binary files /dev/null and b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@struct_mutex.h.blob differ
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@struct_rwlock.h b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@struct_rwlock.h
new file mode 100644
index 0000000..44ff452
--- /dev/null
+++ b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@struct_rwlock.h
@@ -0,0 +1,65 @@
+/* x86 internal rwlock struct definitions.
+ Copyright (C) 2019-2023 Free Software Foundation, Inc.
+
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ . */
+
+#ifndef _RWLOCK_INTERNAL_H
+#define _RWLOCK_INTERNAL_H
+
+struct __pthread_rwlock_arch_t
+{
+ unsigned int __readers;
+ unsigned int __writers;
+ unsigned int __wrphase_futex;
+ unsigned int __writers_futex;
+ unsigned int __pad3;
+ unsigned int __pad4;
+#ifdef __x86_64__
+ int __cur_writer;
+ int __shared;
+ signed char __rwelision;
+# ifdef __ILP32__
+ unsigned char __pad1[3];
+# define __PTHREAD_RWLOCK_ELISION_EXTRA 0, { 0, 0, 0 }
+# else
+ unsigned char __pad1[7];
+# define __PTHREAD_RWLOCK_ELISION_EXTRA 0, { 0, 0, 0, 0, 0, 0, 0 }
+# endif
+ unsigned long int __pad2;
+ /* FLAGS must stay at this position in the structure to maintain
+ binary compatibility. */
+ unsigned int __flags;
+#else /* __x86_64__ */
+ /* FLAGS must stay at this position in the structure to maintain
+ binary compatibility. */
+ unsigned char __flags;
+ unsigned char __shared;
+ signed char __rwelision;
+ unsigned char __pad2;
+ int __cur_writer;
+#endif
+};
+
+#ifdef __x86_64__
+# define __PTHREAD_RWLOCK_INITIALIZER(__flags) \
+ 0, 0, 0, 0, 0, 0, 0, 0, __PTHREAD_RWLOCK_ELISION_EXTRA, 0, __flags
+#else
+# define __PTHREAD_RWLOCK_INITIALIZER(__flags) \
+ 0, 0, 0, 0, 0, 0, __flags, 0, 0, 0, 0
+#endif
+
+#endif
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@struct_rwlock.h.blob b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@struct_rwlock.h.blob
new file mode 100644
index 0000000..99b9e57
Binary files /dev/null and b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@struct_rwlock.h.blob differ
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@thread-shared-types.h b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@thread-shared-types.h
new file mode 100644
index 0000000..2de6ff9
--- /dev/null
+++ b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@thread-shared-types.h
@@ -0,0 +1,115 @@
+/* Common threading primitives definitions for both POSIX and C11.
+ Copyright (C) 2017-2023 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ . */
+
+#ifndef _THREAD_SHARED_TYPES_H
+#define _THREAD_SHARED_TYPES_H 1
+
+/* Arch-specific definitions. Each architecture must define the following
+ macros to define the expected sizes of pthread data types:
+
+ __SIZEOF_PTHREAD_ATTR_T - size of pthread_attr_t.
+ __SIZEOF_PTHREAD_MUTEX_T - size of pthread_mutex_t.
+ __SIZEOF_PTHREAD_MUTEXATTR_T - size of pthread_mutexattr_t.
+ __SIZEOF_PTHREAD_COND_T - size of pthread_cond_t.
+ __SIZEOF_PTHREAD_CONDATTR_T - size of pthread_condattr_t.
+ __SIZEOF_PTHREAD_RWLOCK_T - size of pthread_rwlock_t.
+ __SIZEOF_PTHREAD_RWLOCKATTR_T - size of pthread_rwlockattr_t.
+ __SIZEOF_PTHREAD_BARRIER_T - size of pthread_barrier_t.
+ __SIZEOF_PTHREAD_BARRIERATTR_T - size of pthread_barrierattr_t.
+
+ The additional macro defines any constraint for the lock alignment
+ inside the thread structures:
+
+ __LOCK_ALIGNMENT - for internal lock/futex usage.
+
+ Same idea but for the once locking primitive:
+
+ __ONCE_ALIGNMENT - for pthread_once_t/once_flag definition. */
+
+#include
+
+#include
+
+
+/* Common definition of pthread_mutex_t. */
+
+typedef struct __pthread_internal_list
+{
+ struct __pthread_internal_list *__prev;
+ struct __pthread_internal_list *__next;
+} __pthread_list_t;
+
+typedef struct __pthread_internal_slist
+{
+ struct __pthread_internal_slist *__next;
+} __pthread_slist_t;
+
+/* Arch-specific mutex definitions. A generic implementation is provided
+ by sysdeps/nptl/bits/struct_mutex.h. If required, an architecture
+ can override it by defining:
+
+ 1. struct __pthread_mutex_s (used on both pthread_mutex_t and mtx_t
+ definition). It should contains at least the internal members
+ defined in the generic version.
+
+ 2. __LOCK_ALIGNMENT for any extra attribute for internal lock used with
+ atomic operations.
+
+ 3. The macro __PTHREAD_MUTEX_INITIALIZER used for static initialization.
+ It should initialize the mutex internal flag. */
+
+#include
+
+/* Arch-sepecific read-write lock definitions. A generic implementation is
+ provided by struct_rwlock.h. If required, an architecture can override it
+ by defining:
+
+ 1. struct __pthread_rwlock_arch_t (used on pthread_rwlock_t definition).
+ It should contain at least the internal members defined in the
+ generic version.
+
+ 2. The macro __PTHREAD_RWLOCK_INITIALIZER used for static initialization.
+ It should initialize the rwlock internal type. */
+
+#include
+
+
+/* Common definition of pthread_cond_t. */
+
+struct __pthread_cond_s
+{
+ __atomic_wide_counter __wseq;
+ __atomic_wide_counter __g1_start;
+ unsigned int __g_refs[2] __LOCK_ALIGNMENT;
+ unsigned int __g_size[2];
+ unsigned int __g1_orig_size;
+ unsigned int __wrefs;
+ unsigned int __g_signals[2];
+};
+
+typedef unsigned int __tss_t;
+typedef unsigned long int __thrd_t;
+
+typedef struct
+{
+ int __data __ONCE_ALIGNMENT;
+} __once_flag;
+
+#define __ONCE_FLAG_INIT { 0 }
+
+#endif /* _THREAD_SHARED_TYPES_H */
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@thread-shared-types.h.blob b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@thread-shared-types.h.blob
new file mode 100644
index 0000000..5d452ce
Binary files /dev/null and b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@thread-shared-types.h.blob differ
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@time.h b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@time.h
new file mode 100644
index 0000000..1e6662a
--- /dev/null
+++ b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@time.h
@@ -0,0 +1,93 @@
+/* System-dependent timing definitions. Linux version.
+ Copyright (C) 1996-2023 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ . */
+
+/*
+ * Never include this file directly; use instead.
+ */
+
+#ifndef _BITS_TIME_H
+#define _BITS_TIME_H 1
+
+#include
+
+/* ISO/IEC 9899:1999 7.23.1: Components of time
+ The macro `CLOCKS_PER_SEC' is an expression with type `clock_t' that is
+ the number per second of the value returned by the `clock' function. */
+/* CAE XSH, Issue 4, Version 2:
+ The value of CLOCKS_PER_SEC is required to be 1 million on all
+ XSI-conformant systems. */
+#define CLOCKS_PER_SEC ((__clock_t) 1000000)
+
+#if (!defined __STRICT_ANSI__ || defined __USE_POSIX) \
+ && !defined __USE_XOPEN2K
+/* Even though CLOCKS_PER_SEC has such a strange value CLK_TCK
+ presents the real value for clock ticks per second for the system. */
+extern long int __sysconf (int);
+# define CLK_TCK ((__clock_t) __sysconf (2)) /* 2 is _SC_CLK_TCK */
+#endif
+
+#ifdef __USE_POSIX199309
+/* Identifier for system-wide realtime clock. */
+# define CLOCK_REALTIME 0
+/* Monotonic system-wide clock. */
+# define CLOCK_MONOTONIC 1
+/* High-resolution timer from the CPU. */
+# define CLOCK_PROCESS_CPUTIME_ID 2
+/* Thread-specific CPU-time clock. */
+# define CLOCK_THREAD_CPUTIME_ID 3
+/* Monotonic system-wide clock, not adjusted for frequency scaling. */
+# define CLOCK_MONOTONIC_RAW 4
+/* Identifier for system-wide realtime clock, updated only on ticks. */
+# define CLOCK_REALTIME_COARSE 5
+/* Monotonic system-wide clock, updated only on ticks. */
+# define CLOCK_MONOTONIC_COARSE 6
+/* Monotonic system-wide clock that includes time spent in suspension. */
+# define CLOCK_BOOTTIME 7
+/* Like CLOCK_REALTIME but also wakes suspended system. */
+# define CLOCK_REALTIME_ALARM 8
+/* Like CLOCK_BOOTTIME but also wakes suspended system. */
+# define CLOCK_BOOTTIME_ALARM 9
+/* Like CLOCK_REALTIME but in International Atomic Time. */
+# define CLOCK_TAI 11
+
+/* Flag to indicate time is absolute. */
+# define TIMER_ABSTIME 1
+#endif
+
+#ifdef __USE_GNU
+# include
+
+__BEGIN_DECLS
+
+/* Tune a POSIX clock. */
+extern int clock_adjtime (__clockid_t __clock_id, struct timex *__utx) __THROW __nonnull((2));
+
+#ifdef __USE_TIME_BITS64
+# if defined(__REDIRECT_NTH)
+extern int __REDIRECT_NTH (clock_adjtime, (__clockid_t __clock_id,
+ struct timex *__utx),
+ __clock_adjtime64) __nonnull((2));
+# else
+# define clock_adjtime __clock_adjtime64
+# endif
+#endif
+
+__END_DECLS
+#endif /* use GNU */
+
+#endif /* bits/time.h */
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@time.h.blob b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@time.h.blob
new file mode 100644
index 0000000..baf8245
Binary files /dev/null and b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@time.h.blob differ
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@time64.h b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@time64.h
new file mode 100644
index 0000000..723db1e
--- /dev/null
+++ b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@time64.h
@@ -0,0 +1,36 @@
+/* bits/time64.h -- underlying types for __time64_t. Generic version.
+ Copyright (C) 2018-2023 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ . */
+
+#ifndef _BITS_TYPES_H
+# error "Never include directly; use instead."
+#endif
+
+#ifndef _BITS_TIME64_H
+#define _BITS_TIME64_H 1
+
+/* Define __TIME64_T_TYPE so that it is always a 64-bit type. */
+
+#if __TIMESIZE == 64
+/* If we already have 64-bit time type then use it. */
+# define __TIME64_T_TYPE __TIME_T_TYPE
+#else
+/* Define a 64-bit time type alongsize the 32-bit one. */
+# define __TIME64_T_TYPE __SQUAD_TYPE
+#endif
+
+#endif /* bits/time64.h */
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@time64.h.blob b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@time64.h.blob
new file mode 100644
index 0000000..4cd7141
Binary files /dev/null and b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@time64.h.blob differ
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@timesize.h b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@timesize.h
new file mode 100644
index 0000000..5cb0415
--- /dev/null
+++ b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@timesize.h
@@ -0,0 +1,27 @@
+/* Bit size of the time_t type at glibc build time, x86-64 and x32 case.
+ Copyright (C) 2018-2023 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ . */
+
+#include
+
+#if defined __x86_64__ && defined __ILP32__
+/* For x32, time is 64-bit even though word size is 32-bit. */
+# define __TIMESIZE 64
+#else
+/* For others, time size is word size. */
+# define __TIMESIZE __WORDSIZE
+#endif
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@timesize.h.blob b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@timesize.h.blob
new file mode 100644
index 0000000..2cd3641
Binary files /dev/null and b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@timesize.h.blob differ
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@timex.h b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@timex.h
new file mode 100644
index 0000000..b5601ef
--- /dev/null
+++ b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@timex.h
@@ -0,0 +1,141 @@
+/* Copyright (C) 1995-2023 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ . */
+
+#ifndef _BITS_TIMEX_H
+#define _BITS_TIMEX_H 1
+
+#include
+#include
+
+/* These definitions from linux/timex.h as of 3.18. */
+
+struct timex
+{
+# if defined __USE_TIME_BITS64 || (__TIMESIZE == 64 && __WORDSIZE == 32)
+ unsigned int modes; /* mode selector */
+ int :32; /* pad */
+ long long offset; /* time offset (usec) */
+ long long freq; /* frequency offset (scaled ppm) */
+ long long maxerror; /* maximum error (usec) */
+ long long esterror; /* estimated error (usec) */
+ int status; /* clock command/status */
+ int :32; /* pad */
+ long long constant; /* pll time constant */
+ long long precision; /* clock precision (usec) (read only) */
+ long long tolerance; /* clock frequency tolerance (ppm) (ro) */
+ struct timeval time; /* (read only, except for ADJ_SETOFFSET) */
+ long long tick; /* (modified) usecs between clock ticks */
+ long long ppsfreq; /* pps frequency (scaled ppm) (ro) */
+ long long jitter; /* pps jitter (us) (ro) */
+ int shift; /* interval duration (s) (shift) (ro) */
+ int :32; /* pad */
+ long long stabil; /* pps stability (scaled ppm) (ro) */
+ long long jitcnt; /* jitter limit exceeded (ro) */
+ long long calcnt; /* calibration intervals (ro) */
+ long long errcnt; /* calibration errors (ro) */
+ long long stbcnt; /* stability limit exceeded (ro) */
+
+ int tai; /* TAI offset (ro) */
+
+ int :32; int :32; int :32; int :32;
+ int :32; int :32; int :32; int :32;
+ int :32; int :32; int :32;
+# else
+ unsigned int modes; /* mode selector */
+ __syscall_slong_t offset; /* time offset (usec) */
+ __syscall_slong_t freq; /* frequency offset (scaled ppm) */
+ __syscall_slong_t maxerror; /* maximum error (usec) */
+ __syscall_slong_t esterror; /* estimated error (usec) */
+ int status; /* clock command/status */
+ __syscall_slong_t constant; /* pll time constant */
+ __syscall_slong_t precision; /* clock precision (usec) (ro) */
+ __syscall_slong_t tolerance; /* clock frequency tolerance (ppm) (ro) */
+ struct timeval time; /* (read only, except for ADJ_SETOFFSET) */
+ __syscall_slong_t tick; /* (modified) usecs between clock ticks */
+ __syscall_slong_t ppsfreq; /* pps frequency (scaled ppm) (ro) */
+ __syscall_slong_t jitter; /* pps jitter (us) (ro) */
+ int shift; /* interval duration (s) (shift) (ro) */
+ __syscall_slong_t stabil; /* pps stability (scaled ppm) (ro) */
+ __syscall_slong_t jitcnt; /* jitter limit exceeded (ro) */
+ __syscall_slong_t calcnt; /* calibration intervals (ro) */
+ __syscall_slong_t errcnt; /* calibration errors (ro) */
+ __syscall_slong_t stbcnt; /* stability limit exceeded (ro) */
+
+ int tai; /* TAI offset (ro) */
+
+ /* ??? */
+ int :32; int :32; int :32; int :32;
+ int :32; int :32; int :32; int :32;
+ int :32; int :32; int :32;
+# endif
+};
+
+/* Mode codes (timex.mode) */
+#define ADJ_OFFSET 0x0001 /* time offset */
+#define ADJ_FREQUENCY 0x0002 /* frequency offset */
+#define ADJ_MAXERROR 0x0004 /* maximum time error */
+#define ADJ_ESTERROR 0x0008 /* estimated time error */
+#define ADJ_STATUS 0x0010 /* clock status */
+#define ADJ_TIMECONST 0x0020 /* pll time constant */
+#define ADJ_TAI 0x0080 /* set TAI offset */
+#define ADJ_SETOFFSET 0x0100 /* add 'time' to current time */
+#define ADJ_MICRO 0x1000 /* select microsecond resolution */
+#define ADJ_NANO 0x2000 /* select nanosecond resolution */
+#define ADJ_TICK 0x4000 /* tick value */
+#define ADJ_OFFSET_SINGLESHOT 0x8001 /* old-fashioned adjtime */
+#define ADJ_OFFSET_SS_READ 0xa001 /* read-only adjtime */
+
+/* xntp 3.4 compatibility names */
+#define MOD_OFFSET ADJ_OFFSET
+#define MOD_FREQUENCY ADJ_FREQUENCY
+#define MOD_MAXERROR ADJ_MAXERROR
+#define MOD_ESTERROR ADJ_ESTERROR
+#define MOD_STATUS ADJ_STATUS
+#define MOD_TIMECONST ADJ_TIMECONST
+#define MOD_CLKB ADJ_TICK
+#define MOD_CLKA ADJ_OFFSET_SINGLESHOT /* 0x8000 in original */
+#define MOD_TAI ADJ_TAI
+#define MOD_MICRO ADJ_MICRO
+#define MOD_NANO ADJ_NANO
+
+
+/* Status codes (timex.status) */
+#define STA_PLL 0x0001 /* enable PLL updates (rw) */
+#define STA_PPSFREQ 0x0002 /* enable PPS freq discipline (rw) */
+#define STA_PPSTIME 0x0004 /* enable PPS time discipline (rw) */
+#define STA_FLL 0x0008 /* select frequency-lock mode (rw) */
+
+#define STA_INS 0x0010 /* insert leap (rw) */
+#define STA_DEL 0x0020 /* delete leap (rw) */
+#define STA_UNSYNC 0x0040 /* clock unsynchronized (rw) */
+#define STA_FREQHOLD 0x0080 /* hold frequency (rw) */
+
+#define STA_PPSSIGNAL 0x0100 /* PPS signal present (ro) */
+#define STA_PPSJITTER 0x0200 /* PPS signal jitter exceeded (ro) */
+#define STA_PPSWANDER 0x0400 /* PPS signal wander exceeded (ro) */
+#define STA_PPSERROR 0x0800 /* PPS signal calibration error (ro) */
+
+#define STA_CLOCKERR 0x1000 /* clock hardware fault (ro) */
+#define STA_NANO 0x2000 /* resolution (0 = us, 1 = ns) (ro) */
+#define STA_MODE 0x4000 /* mode (0 = PLL, 1 = FLL) (ro) */
+#define STA_CLK 0x8000 /* clock source (0 = A, 1 = B) (ro) */
+
+/* Read-only bits */
+#define STA_RONLY (STA_PPSSIGNAL | STA_PPSJITTER | STA_PPSWANDER \
+ | STA_PPSERROR | STA_CLOCKERR | STA_NANO | STA_MODE | STA_CLK)
+
+#endif /* bits/timex.h */
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@timex.h.blob b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@timex.h.blob
new file mode 100644
index 0000000..71cf05b
Binary files /dev/null and b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@timex.h.blob differ
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types.h b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types.h
new file mode 100644
index 0000000..a1e18d5
--- /dev/null
+++ b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types.h
@@ -0,0 +1,228 @@
+/* bits/types.h -- definitions of __*_t types underlying *_t types.
+ Copyright (C) 2002-2023 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ . */
+
+/*
+ * Never include this file directly; use instead.
+ */
+
+#ifndef _BITS_TYPES_H
+#define _BITS_TYPES_H 1
+
+#include
+#include
+#include
+
+/* Convenience types. */
+typedef unsigned char __u_char;
+typedef unsigned short int __u_short;
+typedef unsigned int __u_int;
+typedef unsigned long int __u_long;
+
+/* Fixed-size types, underlying types depend on word size and compiler. */
+typedef signed char __int8_t;
+typedef unsigned char __uint8_t;
+typedef signed short int __int16_t;
+typedef unsigned short int __uint16_t;
+typedef signed int __int32_t;
+typedef unsigned int __uint32_t;
+#if __WORDSIZE == 64
+typedef signed long int __int64_t;
+typedef unsigned long int __uint64_t;
+#else
+__extension__ typedef signed long long int __int64_t;
+__extension__ typedef unsigned long long int __uint64_t;
+#endif
+
+/* Smallest types with at least a given width. */
+typedef __int8_t __int_least8_t;
+typedef __uint8_t __uint_least8_t;
+typedef __int16_t __int_least16_t;
+typedef __uint16_t __uint_least16_t;
+typedef __int32_t __int_least32_t;
+typedef __uint32_t __uint_least32_t;
+typedef __int64_t __int_least64_t;
+typedef __uint64_t __uint_least64_t;
+
+/* quad_t is also 64 bits. */
+#if __WORDSIZE == 64
+typedef long int __quad_t;
+typedef unsigned long int __u_quad_t;
+#else
+__extension__ typedef long long int __quad_t;
+__extension__ typedef unsigned long long int __u_quad_t;
+#endif
+
+/* Largest integral types. */
+#if __WORDSIZE == 64
+typedef long int __intmax_t;
+typedef unsigned long int __uintmax_t;
+#else
+__extension__ typedef long long int __intmax_t;
+__extension__ typedef unsigned long long int __uintmax_t;
+#endif
+
+
+/* The machine-dependent file defines __*_T_TYPE
+ macros for each of the OS types we define below. The definitions
+ of those macros must use the following macros for underlying types.
+ We define __S_TYPE and __U_TYPE for the signed and unsigned
+ variants of each of the following integer types on this machine.
+
+ 16 -- "natural" 16-bit type (always short)
+ 32 -- "natural" 32-bit type (always int)
+ 64 -- "natural" 64-bit type (long or long long)
+ LONG32 -- 32-bit type, traditionally long
+ QUAD -- 64-bit type, traditionally long long
+ WORD -- natural type of __WORDSIZE bits (int or long)
+ LONGWORD -- type of __WORDSIZE bits, traditionally long
+
+ We distinguish WORD/LONGWORD, 32/LONG32, and 64/QUAD so that the
+ conventional uses of `long' or `long long' type modifiers match the
+ types we define, even when a less-adorned type would be the same size.
+ This matters for (somewhat) portably writing printf/scanf formats for
+ these types, where using the appropriate l or ll format modifiers can
+ make the typedefs and the formats match up across all GNU platforms. If
+ we used `long' when it's 64 bits where `long long' is expected, then the
+ compiler would warn about the formats not matching the argument types,
+ and the programmer changing them to shut up the compiler would break the
+ program's portability.
+
+ Here we assume what is presently the case in all the GCC configurations
+ we support: long long is always 64 bits, long is always word/address size,
+ and int is always 32 bits. */
+
+#define __S16_TYPE short int
+#define __U16_TYPE unsigned short int
+#define __S32_TYPE int
+#define __U32_TYPE unsigned int
+#define __SLONGWORD_TYPE long int
+#define __ULONGWORD_TYPE unsigned long int
+#if __WORDSIZE == 32
+# define __SQUAD_TYPE __int64_t
+# define __UQUAD_TYPE __uint64_t
+# define __SWORD_TYPE int
+# define __UWORD_TYPE unsigned int
+# define __SLONG32_TYPE long int
+# define __ULONG32_TYPE unsigned long int
+# define __S64_TYPE __int64_t
+# define __U64_TYPE __uint64_t
+/* We want __extension__ before typedef's that use nonstandard base types
+ such as `long long' in C89 mode. */
+# define __STD_TYPE __extension__ typedef
+#elif __WORDSIZE == 64
+# define __SQUAD_TYPE long int
+# define __UQUAD_TYPE unsigned long int
+# define __SWORD_TYPE long int
+# define __UWORD_TYPE unsigned long int
+# define __SLONG32_TYPE int
+# define __ULONG32_TYPE unsigned int
+# define __S64_TYPE long int
+# define __U64_TYPE unsigned long int
+/* No need to mark the typedef with __extension__. */
+# define __STD_TYPE typedef
+#else
+# error
+#endif
+#include /* Defines __*_T_TYPE macros. */
+#include /* Defines __TIME*_T_TYPE macros. */
+
+
+__STD_TYPE __DEV_T_TYPE __dev_t; /* Type of device numbers. */
+__STD_TYPE __UID_T_TYPE __uid_t; /* Type of user identifications. */
+__STD_TYPE __GID_T_TYPE __gid_t; /* Type of group identifications. */
+__STD_TYPE __INO_T_TYPE __ino_t; /* Type of file serial numbers. */
+__STD_TYPE __INO64_T_TYPE __ino64_t; /* Type of file serial numbers (LFS).*/
+__STD_TYPE __MODE_T_TYPE __mode_t; /* Type of file attribute bitmasks. */
+__STD_TYPE __NLINK_T_TYPE __nlink_t; /* Type of file link counts. */
+__STD_TYPE __OFF_T_TYPE __off_t; /* Type of file sizes and offsets. */
+__STD_TYPE __OFF64_T_TYPE __off64_t; /* Type of file sizes and offsets (LFS). */
+__STD_TYPE __PID_T_TYPE __pid_t; /* Type of process identifications. */
+__STD_TYPE __FSID_T_TYPE __fsid_t; /* Type of file system IDs. */
+__STD_TYPE __CLOCK_T_TYPE __clock_t; /* Type of CPU usage counts. */
+__STD_TYPE __RLIM_T_TYPE __rlim_t; /* Type for resource measurement. */
+__STD_TYPE __RLIM64_T_TYPE __rlim64_t; /* Type for resource measurement (LFS). */
+__STD_TYPE __ID_T_TYPE __id_t; /* General type for IDs. */
+__STD_TYPE __TIME_T_TYPE __time_t; /* Seconds since the Epoch. */
+__STD_TYPE __USECONDS_T_TYPE __useconds_t; /* Count of microseconds. */
+__STD_TYPE __SUSECONDS_T_TYPE __suseconds_t; /* Signed count of microseconds. */
+__STD_TYPE __SUSECONDS64_T_TYPE __suseconds64_t;
+
+__STD_TYPE __DADDR_T_TYPE __daddr_t; /* The type of a disk address. */
+__STD_TYPE __KEY_T_TYPE __key_t; /* Type of an IPC key. */
+
+/* Clock ID used in clock and timer functions. */
+__STD_TYPE __CLOCKID_T_TYPE __clockid_t;
+
+/* Timer ID returned by `timer_create'. */
+__STD_TYPE __TIMER_T_TYPE __timer_t;
+
+/* Type to represent block size. */
+__STD_TYPE __BLKSIZE_T_TYPE __blksize_t;
+
+/* Types from the Large File Support interface. */
+
+/* Type to count number of disk blocks. */
+__STD_TYPE __BLKCNT_T_TYPE __blkcnt_t;
+__STD_TYPE __BLKCNT64_T_TYPE __blkcnt64_t;
+
+/* Type to count file system blocks. */
+__STD_TYPE __FSBLKCNT_T_TYPE __fsblkcnt_t;
+__STD_TYPE __FSBLKCNT64_T_TYPE __fsblkcnt64_t;
+
+/* Type to count file system nodes. */
+__STD_TYPE __FSFILCNT_T_TYPE __fsfilcnt_t;
+__STD_TYPE __FSFILCNT64_T_TYPE __fsfilcnt64_t;
+
+/* Type of miscellaneous file system fields. */
+__STD_TYPE __FSWORD_T_TYPE __fsword_t;
+
+__STD_TYPE __SSIZE_T_TYPE __ssize_t; /* Type of a byte count, or error. */
+
+/* Signed long type used in system calls. */
+__STD_TYPE __SYSCALL_SLONG_TYPE __syscall_slong_t;
+/* Unsigned long type used in system calls. */
+__STD_TYPE __SYSCALL_ULONG_TYPE __syscall_ulong_t;
+
+/* These few don't really vary by system, they always correspond
+ to one of the other defined types. */
+typedef __off64_t __loff_t; /* Type of file sizes and offsets (LFS). */
+typedef char *__caddr_t;
+
+/* Duplicates info from stdint.h but this is used in unistd.h. */
+__STD_TYPE __SWORD_TYPE __intptr_t;
+
+/* Duplicate info from sys/socket.h. */
+__STD_TYPE __U32_TYPE __socklen_t;
+
+/* C99: An integer type that can be accessed as an atomic entity,
+ even in the presence of asynchronous interrupts.
+ It is not currently necessary for this to be machine-specific. */
+typedef int __sig_atomic_t;
+
+/* Seconds since the Epoch, visible to user code when time_t is too
+ narrow only for consistency with the old way of widening too-narrow
+ types. User code should never use __time64_t. */
+#if __TIMESIZE == 64 && defined __LIBC
+# define __time64_t __time_t
+#elif __TIMESIZE != 64
+__STD_TYPE __TIME64_T_TYPE __time64_t;
+#endif
+
+#undef __STD_TYPE
+
+#endif /* bits/types.h */
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types.h.blob b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types.h.blob
new file mode 100644
index 0000000..6956a00
Binary files /dev/null and b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types.h.blob differ
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@FILE.h b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@FILE.h
new file mode 100644
index 0000000..f268263
--- /dev/null
+++ b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@FILE.h
@@ -0,0 +1,9 @@
+#ifndef __FILE_defined
+#define __FILE_defined 1
+
+struct _IO_FILE;
+
+/* The opaque type of streams. This is the definition used elsewhere. */
+typedef struct _IO_FILE FILE;
+
+#endif
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@FILE.h.blob b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@FILE.h.blob
new file mode 100644
index 0000000..f297adf
Binary files /dev/null and b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@FILE.h.blob differ
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@__FILE.h b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@__FILE.h
new file mode 100644
index 0000000..06dd79b
--- /dev/null
+++ b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@__FILE.h
@@ -0,0 +1,7 @@
+#ifndef ____FILE_defined
+#define ____FILE_defined 1
+
+struct _IO_FILE;
+typedef struct _IO_FILE __FILE;
+
+#endif
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@__FILE.h.blob b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@__FILE.h.blob
new file mode 100644
index 0000000..deccbee
Binary files /dev/null and b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@__FILE.h.blob differ
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@__fpos64_t.h b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@__fpos64_t.h
new file mode 100644
index 0000000..06a6891
--- /dev/null
+++ b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@__fpos64_t.h
@@ -0,0 +1,16 @@
+#ifndef _____fpos64_t_defined
+#define _____fpos64_t_defined 1
+
+#include
+#include
+
+/* The tag name of this struct is _G_fpos64_t to preserve historic
+ C++ mangled names for functions taking fpos_t and/or fpos64_t
+ arguments. That name should not be used in new code. */
+typedef struct _G_fpos64_t
+{
+ __off64_t __pos;
+ __mbstate_t __state;
+} __fpos64_t;
+
+#endif
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@__fpos64_t.h.blob b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@__fpos64_t.h.blob
new file mode 100644
index 0000000..9403127
Binary files /dev/null and b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@__fpos64_t.h.blob differ
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@__fpos_t.h b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@__fpos_t.h
new file mode 100644
index 0000000..bb04576
--- /dev/null
+++ b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@__fpos_t.h
@@ -0,0 +1,16 @@
+#ifndef _____fpos_t_defined
+#define _____fpos_t_defined 1
+
+#include
+#include
+
+/* The tag name of this struct is _G_fpos_t to preserve historic
+ C++ mangled names for functions taking fpos_t arguments.
+ That name should not be used in new code. */
+typedef struct _G_fpos_t
+{
+ __off_t __pos;
+ __mbstate_t __state;
+} __fpos_t;
+
+#endif
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@__fpos_t.h.blob b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@__fpos_t.h.blob
new file mode 100644
index 0000000..bd0554b
Binary files /dev/null and b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@__fpos_t.h.blob differ
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@__locale_t.h b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@__locale_t.h
new file mode 100644
index 0000000..6b83d38
--- /dev/null
+++ b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@__locale_t.h
@@ -0,0 +1,43 @@
+/* Definition of struct __locale_struct and __locale_t.
+ Copyright (C) 1997-2023 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ . */
+
+#ifndef _BITS_TYPES___LOCALE_T_H
+#define _BITS_TYPES___LOCALE_T_H 1
+
+/* POSIX.1-2008: the locale_t type, representing a locale context
+ (implementation-namespace version). This type should be treated
+ as opaque by applications; some details are exposed for the sake of
+ efficiency in e.g. ctype functions. */
+
+struct __locale_struct
+{
+ /* Note: LC_ALL is not a valid index into this array. */
+ struct __locale_data *__locales[13]; /* 13 = __LC_LAST. */
+
+ /* To increase the speed of this solution we add some special members. */
+ const unsigned short int *__ctype_b;
+ const int *__ctype_tolower;
+ const int *__ctype_toupper;
+
+ /* Note: LC_ALL is not a valid index into this array. */
+ const char *__names[13];
+};
+
+typedef struct __locale_struct *__locale_t;
+
+#endif /* bits/types/__locale_t.h */
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@__locale_t.h.blob b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@__locale_t.h.blob
new file mode 100644
index 0000000..110835f
Binary files /dev/null and b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@__locale_t.h.blob differ
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@__mbstate_t.h b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@__mbstate_t.h
new file mode 100644
index 0000000..1d8a4e2
--- /dev/null
+++ b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@__mbstate_t.h
@@ -0,0 +1,23 @@
+#ifndef ____mbstate_t_defined
+#define ____mbstate_t_defined 1
+
+/* Integral type unchanged by default argument promotions that can
+ hold any value corresponding to members of the extended character
+ set, as well as at least one value that does not correspond to any
+ member of the extended character set. */
+#ifndef __WINT_TYPE__
+# define __WINT_TYPE__ unsigned int
+#endif
+
+/* Conversion state information. */
+typedef struct
+{
+ int __count;
+ union
+ {
+ __WINT_TYPE__ __wch;
+ char __wchb[4];
+ } __value; /* Value so far. */
+} __mbstate_t;
+
+#endif
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@__mbstate_t.h.blob b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@__mbstate_t.h.blob
new file mode 100644
index 0000000..8ca45ad
Binary files /dev/null and b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@__mbstate_t.h.blob differ
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@__sigset_t.h b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@__sigset_t.h
new file mode 100644
index 0000000..e2f18ac
--- /dev/null
+++ b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@__sigset_t.h
@@ -0,0 +1,10 @@
+#ifndef ____sigset_t_defined
+#define ____sigset_t_defined
+
+#define _SIGSET_NWORDS (1024 / (8 * sizeof (unsigned long int)))
+typedef struct
+{
+ unsigned long int __val[_SIGSET_NWORDS];
+} __sigset_t;
+
+#endif
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@__sigset_t.h.blob b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@__sigset_t.h.blob
new file mode 100644
index 0000000..d047bd9
Binary files /dev/null and b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@__sigset_t.h.blob differ
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@clock_t.h b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@clock_t.h
new file mode 100644
index 0000000..ce97248
--- /dev/null
+++ b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@clock_t.h
@@ -0,0 +1,9 @@
+#ifndef __clock_t_defined
+#define __clock_t_defined 1
+
+#include
+
+/* Returned by `clock'. */
+typedef __clock_t clock_t;
+
+#endif
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@clock_t.h.blob b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@clock_t.h.blob
new file mode 100644
index 0000000..5c89efe
Binary files /dev/null and b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@clock_t.h.blob differ
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@clockid_t.h b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@clockid_t.h
new file mode 100644
index 0000000..b17c7da
--- /dev/null
+++ b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@clockid_t.h
@@ -0,0 +1,9 @@
+#ifndef __clockid_t_defined
+#define __clockid_t_defined 1
+
+#include
+
+/* Clock ID used in clock and timer functions. */
+typedef __clockid_t clockid_t;
+
+#endif
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@clockid_t.h.blob b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@clockid_t.h.blob
new file mode 100644
index 0000000..6102b50
Binary files /dev/null and b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@clockid_t.h.blob differ
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@cookie_io_functions_t.h b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@cookie_io_functions_t.h
new file mode 100644
index 0000000..6132423
--- /dev/null
+++ b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@cookie_io_functions_t.h
@@ -0,0 +1,63 @@
+/* Copyright (C) 1991-2023 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ . */
+
+#ifndef __cookie_io_functions_t_defined
+#define __cookie_io_functions_t_defined 1
+
+#include
+
+/* Functions to do I/O and file management for a stream. */
+
+/* Read NBYTES bytes from COOKIE into a buffer pointed to by BUF.
+ Return number of bytes read. */
+typedef __ssize_t cookie_read_function_t (void *__cookie, char *__buf,
+ size_t __nbytes);
+
+/* Write NBYTES bytes pointed to by BUF to COOKIE. Write all NBYTES bytes
+ unless there is an error. Return number of bytes written. If
+ there is an error, return 0 and do not write anything. If the file
+ has been opened for append (__mode.__append set), then set the file
+ pointer to the end of the file and then do the write; if not, just
+ write at the current file pointer. */
+typedef __ssize_t cookie_write_function_t (void *__cookie, const char *__buf,
+ size_t __nbytes);
+
+/* Move COOKIE's file position to *POS bytes from the
+ beginning of the file (if W is SEEK_SET),
+ the current position (if W is SEEK_CUR),
+ or the end of the file (if W is SEEK_END).
+ Set *POS to the new file position.
+ Returns zero if successful, nonzero if not. */
+typedef int cookie_seek_function_t (void *__cookie, __off64_t *__pos, int __w);
+
+/* Close COOKIE. */
+typedef int cookie_close_function_t (void *__cookie);
+
+/* The structure with the cookie function pointers.
+ The tag name of this struct is _IO_cookie_io_functions_t to
+ preserve historic C++ mangled names for functions taking
+ cookie_io_functions_t arguments. That name should not be used in
+ new code. */
+typedef struct _IO_cookie_io_functions_t
+{
+ cookie_read_function_t *read; /* Read bytes. */
+ cookie_write_function_t *write; /* Write bytes. */
+ cookie_seek_function_t *seek; /* Seek/tell file position. */
+ cookie_close_function_t *close; /* Close file. */
+} cookie_io_functions_t;
+
+#endif
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@cookie_io_functions_t.h.blob b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@cookie_io_functions_t.h.blob
new file mode 100644
index 0000000..5110ea0
Binary files /dev/null and b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@cookie_io_functions_t.h.blob differ
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@error_t.h b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@error_t.h
new file mode 100644
index 0000000..c9f5237
--- /dev/null
+++ b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@error_t.h
@@ -0,0 +1,24 @@
+/* Define error_t.
+ Copyright (C) 1991-2023 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ . */
+
+#ifndef __error_t_defined
+# define __error_t_defined 1
+
+typedef int error_t;
+
+#endif
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@error_t.h.blob b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@error_t.h.blob
new file mode 100644
index 0000000..2a27300
Binary files /dev/null and b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@error_t.h.blob differ
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@locale_t.h b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@locale_t.h
new file mode 100644
index 0000000..2de0f6d
--- /dev/null
+++ b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@locale_t.h
@@ -0,0 +1,26 @@
+/* Definition of locale_t.
+ Copyright (C) 2017-2023 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ . */
+
+#ifndef _BITS_TYPES_LOCALE_T_H
+#define _BITS_TYPES_LOCALE_T_H 1
+
+#include
+
+typedef __locale_t locale_t;
+
+#endif /* bits/types/locale_t.h */
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@locale_t.h.blob b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@locale_t.h.blob
new file mode 100644
index 0000000..a494a78
Binary files /dev/null and b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@locale_t.h.blob differ
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@mbstate_t.h b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@mbstate_t.h
new file mode 100644
index 0000000..8d1baa5
--- /dev/null
+++ b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@mbstate_t.h
@@ -0,0 +1,8 @@
+#ifndef __mbstate_t_defined
+#define __mbstate_t_defined 1
+
+#include
+
+typedef __mbstate_t mbstate_t;
+
+#endif
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@mbstate_t.h.blob b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@mbstate_t.h.blob
new file mode 100644
index 0000000..caa620d
Binary files /dev/null and b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@mbstate_t.h.blob differ
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@sigset_t.h b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@sigset_t.h
new file mode 100644
index 0000000..8b27e91
--- /dev/null
+++ b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@sigset_t.h
@@ -0,0 +1,9 @@
+#ifndef __sigset_t_defined
+#define __sigset_t_defined 1
+
+#include
+
+/* A set of signals to be blocked, unblocked, or waited for. */
+typedef __sigset_t sigset_t;
+
+#endif
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@sigset_t.h.blob b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@sigset_t.h.blob
new file mode 100644
index 0000000..8e989bf
Binary files /dev/null and b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@sigset_t.h.blob differ
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@struct_FILE.h b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@struct_FILE.h
new file mode 100644
index 0000000..fc26150
--- /dev/null
+++ b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@struct_FILE.h
@@ -0,0 +1,120 @@
+/* Copyright (C) 1991-2023 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ . */
+
+#ifndef __struct_FILE_defined
+#define __struct_FILE_defined 1
+
+/* Caution: The contents of this file are not part of the official
+ stdio.h API. However, much of it is part of the official *binary*
+ interface, and therefore cannot be changed. */
+
+#if defined _IO_USE_OLD_IO_FILE && !defined _LIBC
+# error "_IO_USE_OLD_IO_FILE should only be defined when building libc itself"
+#endif
+
+#if defined _IO_lock_t_defined && !defined _LIBC
+# error "_IO_lock_t_defined should only be defined when building libc itself"
+#endif
+
+#include
+
+struct _IO_FILE;
+struct _IO_marker;
+struct _IO_codecvt;
+struct _IO_wide_data;
+
+/* During the build of glibc itself, _IO_lock_t will already have been
+ defined by internal headers. */
+#ifndef _IO_lock_t_defined
+typedef void _IO_lock_t;
+#endif
+
+/* The tag name of this struct is _IO_FILE to preserve historic
+ C++ mangled names for functions taking FILE* arguments.
+ That name should not be used in new code. */
+struct _IO_FILE
+{
+ int _flags; /* High-order word is _IO_MAGIC; rest is flags. */
+
+ /* The following pointers correspond to the C++ streambuf protocol. */
+ char *_IO_read_ptr; /* Current read pointer */
+ char *_IO_read_end; /* End of get area. */
+ char *_IO_read_base; /* Start of putback+get area. */
+ char *_IO_write_base; /* Start of put area. */
+ char *_IO_write_ptr; /* Current put pointer. */
+ char *_IO_write_end; /* End of put area. */
+ char *_IO_buf_base; /* Start of reserve area. */
+ char *_IO_buf_end; /* End of reserve area. */
+
+ /* The following fields are used to support backing up and undo. */
+ char *_IO_save_base; /* Pointer to start of non-current get area. */
+ char *_IO_backup_base; /* Pointer to first valid character of backup area */
+ char *_IO_save_end; /* Pointer to end of non-current get area. */
+
+ struct _IO_marker *_markers;
+
+ struct _IO_FILE *_chain;
+
+ int _fileno;
+ int _flags2;
+ __off_t _old_offset; /* This used to be _offset but it's too small. */
+
+ /* 1+column number of pbase(); 0 is unknown. */
+ unsigned short _cur_column;
+ signed char _vtable_offset;
+ char _shortbuf[1];
+
+ _IO_lock_t *_lock;
+#ifdef _IO_USE_OLD_IO_FILE
+};
+
+struct _IO_FILE_complete
+{
+ struct _IO_FILE _file;
+#endif
+ __off64_t _offset;
+ /* Wide character stream stuff. */
+ struct _IO_codecvt *_codecvt;
+ struct _IO_wide_data *_wide_data;
+ struct _IO_FILE *_freeres_list;
+ void *_freeres_buf;
+ size_t __pad5;
+ int _mode;
+ /* Make sure we don't get into trouble again. */
+ char _unused2[15 * sizeof (int) - 4 * sizeof (void *) - sizeof (size_t)];
+};
+
+/* These macros are used by bits/stdio.h and internal headers. */
+#define __getc_unlocked_body(_fp) \
+ (__glibc_unlikely ((_fp)->_IO_read_ptr >= (_fp)->_IO_read_end) \
+ ? __uflow (_fp) : *(unsigned char *) (_fp)->_IO_read_ptr++)
+
+#define __putc_unlocked_body(_ch, _fp) \
+ (__glibc_unlikely ((_fp)->_IO_write_ptr >= (_fp)->_IO_write_end) \
+ ? __overflow (_fp, (unsigned char) (_ch)) \
+ : (unsigned char) (*(_fp)->_IO_write_ptr++ = (_ch)))
+
+#define _IO_EOF_SEEN 0x0010
+#define __feof_unlocked_body(_fp) (((_fp)->_flags & _IO_EOF_SEEN) != 0)
+
+#define _IO_ERR_SEEN 0x0020
+#define __ferror_unlocked_body(_fp) (((_fp)->_flags & _IO_ERR_SEEN) != 0)
+
+#define _IO_USER_LOCK 0x8000
+/* Many more flag bits are defined internally. */
+
+#endif
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@struct_FILE.h.blob b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@struct_FILE.h.blob
new file mode 100644
index 0000000..2d7d387
Binary files /dev/null and b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@struct_FILE.h.blob differ
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@struct___jmp_buf_tag.h b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@struct___jmp_buf_tag.h
new file mode 100644
index 0000000..377395c
--- /dev/null
+++ b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@struct___jmp_buf_tag.h
@@ -0,0 +1,37 @@
+/* Define struct __jmp_buf_tag.
+ Copyright (C) 1991-2023 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ . */
+
+#ifndef __jmp_buf_tag_defined
+#define __jmp_buf_tag_defined 1
+
+#include /* Get `__jmp_buf'. */
+#include
+
+/* Calling environment, plus possibly a saved signal mask. */
+struct __jmp_buf_tag
+ {
+ /* NOTE: The machine-dependent definitions of `__sigsetjmp'
+ assume that a `jmp_buf' begins with a `__jmp_buf' and that
+ `__mask_was_saved' follows it. Do not move these members
+ or add others before it. */
+ __jmp_buf __jmpbuf; /* Calling environment. */
+ int __mask_was_saved; /* Saved the signal mask? */
+ __sigset_t __saved_mask; /* Saved signal mask. */
+ };
+
+#endif
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@struct___jmp_buf_tag.h.blob b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@struct___jmp_buf_tag.h.blob
new file mode 100644
index 0000000..ab914aa
Binary files /dev/null and b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@struct___jmp_buf_tag.h.blob differ
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@struct_itimerspec.h b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@struct_itimerspec.h
new file mode 100644
index 0000000..17cc1ac
--- /dev/null
+++ b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@struct_itimerspec.h
@@ -0,0 +1,14 @@
+#ifndef __itimerspec_defined
+#define __itimerspec_defined 1
+
+#include
+#include
+
+/* POSIX.1b structure for timer start values and intervals. */
+struct itimerspec
+ {
+ struct timespec it_interval;
+ struct timespec it_value;
+ };
+
+#endif
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@struct_itimerspec.h.blob b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@struct_itimerspec.h.blob
new file mode 100644
index 0000000..a9ef22d
Binary files /dev/null and b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@struct_itimerspec.h.blob differ
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@struct_sched_param.h b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@struct_sched_param.h
new file mode 100644
index 0000000..7b08044
--- /dev/null
+++ b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@struct_sched_param.h
@@ -0,0 +1,28 @@
+/* Sched parameter structure. Generic version.
+ Copyright (C) 1996-2023 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ . */
+
+#ifndef _BITS_TYPES_STRUCT_SCHED_PARAM
+#define _BITS_TYPES_STRUCT_SCHED_PARAM 1
+
+/* Data structure to describe a process' schedulability. */
+struct sched_param
+{
+ int sched_priority;
+};
+
+#endif /* bits/types/struct_sched_param.h */
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@struct_sched_param.h.blob b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@struct_sched_param.h.blob
new file mode 100644
index 0000000..ac3d9d1
Binary files /dev/null and b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@struct_sched_param.h.blob differ
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@struct_timespec.h b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@struct_timespec.h
new file mode 100644
index 0000000..489e811
--- /dev/null
+++ b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@struct_timespec.h
@@ -0,0 +1,33 @@
+/* NB: Include guard matches what uses. */
+#ifndef _STRUCT_TIMESPEC
+#define _STRUCT_TIMESPEC 1
+
+#include
+#include
+#include
+
+/* POSIX.1b structure for a time value. This is like a `struct timeval' but
+ has nanoseconds instead of microseconds. */
+struct timespec
+{
+#ifdef __USE_TIME_BITS64
+ __time64_t tv_sec; /* Seconds. */
+#else
+ __time_t tv_sec; /* Seconds. */
+#endif
+#if __WORDSIZE == 64 \
+ || (defined __SYSCALL_WORDSIZE && __SYSCALL_WORDSIZE == 64) \
+ || (__TIMESIZE == 32 && !defined __USE_TIME_BITS64)
+ __syscall_slong_t tv_nsec; /* Nanoseconds. */
+#else
+# if __BYTE_ORDER == __BIG_ENDIAN
+ int: 32; /* Padding. */
+ long int tv_nsec; /* Nanoseconds. */
+# else
+ long int tv_nsec; /* Nanoseconds. */
+ int: 32; /* Padding. */
+# endif
+#endif
+};
+
+#endif
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@struct_timespec.h.blob b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@struct_timespec.h.blob
new file mode 100644
index 0000000..adfe62e
Binary files /dev/null and b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@struct_timespec.h.blob differ
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@struct_timeval.h b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@struct_timeval.h
new file mode 100644
index 0000000..3466137
--- /dev/null
+++ b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@struct_timeval.h
@@ -0,0 +1,18 @@
+#ifndef __timeval_defined
+#define __timeval_defined 1
+
+#include
+
+/* A time value that is accurate to the nearest
+ microsecond but also has a range of years. */
+struct timeval
+{
+#ifdef __USE_TIME_BITS64
+ __time64_t tv_sec; /* Seconds. */
+ __suseconds64_t tv_usec; /* Microseconds. */
+#else
+ __time_t tv_sec; /* Seconds. */
+ __suseconds_t tv_usec; /* Microseconds. */
+#endif
+};
+#endif
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@struct_timeval.h.blob b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@struct_timeval.h.blob
new file mode 100644
index 0000000..954f025
Binary files /dev/null and b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@struct_timeval.h.blob differ
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@struct_tm.h b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@struct_tm.h
new file mode 100644
index 0000000..b13b631
--- /dev/null
+++ b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@struct_tm.h
@@ -0,0 +1,28 @@
+#ifndef __struct_tm_defined
+#define __struct_tm_defined 1
+
+#include
+
+/* ISO C `broken-down time' structure. */
+struct tm
+{
+ int tm_sec; /* Seconds. [0-60] (1 leap second) */
+ int tm_min; /* Minutes. [0-59] */
+ int tm_hour; /* Hours. [0-23] */
+ int tm_mday; /* Day. [1-31] */
+ int tm_mon; /* Month. [0-11] */
+ int tm_year; /* Year - 1900. */
+ int tm_wday; /* Day of week. [0-6] */
+ int tm_yday; /* Days in year.[0-365] */
+ int tm_isdst; /* DST. [-1/0/1]*/
+
+# ifdef __USE_MISC
+ long int tm_gmtoff; /* Seconds east of UTC. */
+ const char *tm_zone; /* Timezone abbreviation. */
+# else
+ long int __tm_gmtoff; /* Seconds east of UTC. */
+ const char *__tm_zone; /* Timezone abbreviation. */
+# endif
+};
+
+#endif
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@struct_tm.h.blob b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@struct_tm.h.blob
new file mode 100644
index 0000000..dc76dcf
Binary files /dev/null and b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@struct_tm.h.blob differ
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@time_t.h b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@time_t.h
new file mode 100644
index 0000000..84d67f6
--- /dev/null
+++ b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@time_t.h
@@ -0,0 +1,13 @@
+#ifndef __time_t_defined
+#define __time_t_defined 1
+
+#include
+
+/* Returned by `time'. */
+#ifdef __USE_TIME_BITS64
+typedef __time64_t time_t;
+#else
+typedef __time_t time_t;
+#endif
+
+#endif
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@time_t.h.blob b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@time_t.h.blob
new file mode 100644
index 0000000..43d1efd
Binary files /dev/null and b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@time_t.h.blob differ
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@timer_t.h b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@timer_t.h
new file mode 100644
index 0000000..d71a413
--- /dev/null
+++ b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@timer_t.h
@@ -0,0 +1,9 @@
+#ifndef __timer_t_defined
+#define __timer_t_defined 1
+
+#include
+
+/* Timer ID returned by `timer_create'. */
+typedef __timer_t timer_t;
+
+#endif
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@timer_t.h.blob b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@timer_t.h.blob
new file mode 100644
index 0000000..f9d3878
Binary files /dev/null and b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@timer_t.h.blob differ
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@wint_t.h b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@wint_t.h
new file mode 100644
index 0000000..fbd63db
--- /dev/null
+++ b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@wint_t.h
@@ -0,0 +1,23 @@
+#ifndef __wint_t_defined
+#define __wint_t_defined 1
+
+/* Some versions of stddef.h provide wint_t, even though neither the
+ C nor C++ standards, nor POSIX, specifies this. We assume that
+ stddef.h will define the macro _WINT_T if and only if it provides
+ wint_t, and conversely, that it will avoid providing wint_t if
+ _WINT_T is already defined. */
+#ifndef _WINT_T
+#define _WINT_T 1
+
+/* Integral type unchanged by default argument promotions that can
+ hold any value corresponding to members of the extended character
+ set, as well as at least one value that does not correspond to any
+ member of the extended character set. */
+#ifndef __WINT_TYPE__
+# define __WINT_TYPE__ unsigned int
+#endif
+
+typedef __WINT_TYPE__ wint_t;
+
+#endif /* _WINT_T */
+#endif /* bits/types/wint_t.h */
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@wint_t.h.blob b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@wint_t.h.blob
new file mode 100644
index 0000000..d4c3e5f
Binary files /dev/null and b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@types@wint_t.h.blob differ
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@typesizes.h b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@typesizes.h
new file mode 100644
index 0000000..6b6ec0d
--- /dev/null
+++ b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@typesizes.h
@@ -0,0 +1,106 @@
+/* bits/typesizes.h -- underlying types for *_t. Linux/x86-64 version.
+ Copyright (C) 2012-2023 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ . */
+
+#ifndef _BITS_TYPES_H
+# error "Never include directly; use instead."
+#endif
+
+#ifndef _BITS_TYPESIZES_H
+#define _BITS_TYPESIZES_H 1
+
+/* See for the meaning of these macros. This file exists so
+ that need not vary across different GNU platforms. */
+
+/* X32 kernel interface is 64-bit. */
+#if defined __x86_64__ && defined __ILP32__
+# define __SYSCALL_SLONG_TYPE __SQUAD_TYPE
+# define __SYSCALL_ULONG_TYPE __UQUAD_TYPE
+#else
+# define __SYSCALL_SLONG_TYPE __SLONGWORD_TYPE
+# define __SYSCALL_ULONG_TYPE __ULONGWORD_TYPE
+#endif
+
+#define __DEV_T_TYPE __UQUAD_TYPE
+#define __UID_T_TYPE __U32_TYPE
+#define __GID_T_TYPE __U32_TYPE
+#define __INO_T_TYPE __SYSCALL_ULONG_TYPE
+#define __INO64_T_TYPE __UQUAD_TYPE
+#define __MODE_T_TYPE __U32_TYPE
+#ifdef __x86_64__
+# define __NLINK_T_TYPE __SYSCALL_ULONG_TYPE
+# define __FSWORD_T_TYPE __SYSCALL_SLONG_TYPE
+#else
+# define __NLINK_T_TYPE __UWORD_TYPE
+# define __FSWORD_T_TYPE __SWORD_TYPE
+#endif
+#define __OFF_T_TYPE __SYSCALL_SLONG_TYPE
+#define __OFF64_T_TYPE __SQUAD_TYPE
+#define __PID_T_TYPE __S32_TYPE
+#define __RLIM_T_TYPE __SYSCALL_ULONG_TYPE
+#define __RLIM64_T_TYPE __UQUAD_TYPE
+#define __BLKCNT_T_TYPE __SYSCALL_SLONG_TYPE
+#define __BLKCNT64_T_TYPE __SQUAD_TYPE
+#define __FSBLKCNT_T_TYPE __SYSCALL_ULONG_TYPE
+#define __FSBLKCNT64_T_TYPE __UQUAD_TYPE
+#define __FSFILCNT_T_TYPE __SYSCALL_ULONG_TYPE
+#define __FSFILCNT64_T_TYPE __UQUAD_TYPE
+#define __ID_T_TYPE __U32_TYPE
+#define __CLOCK_T_TYPE __SYSCALL_SLONG_TYPE
+#define __TIME_T_TYPE __SYSCALL_SLONG_TYPE
+#define __USECONDS_T_TYPE __U32_TYPE
+#define __SUSECONDS_T_TYPE __SYSCALL_SLONG_TYPE
+#define __SUSECONDS64_T_TYPE __SQUAD_TYPE
+#define __DADDR_T_TYPE __S32_TYPE
+#define __KEY_T_TYPE __S32_TYPE
+#define __CLOCKID_T_TYPE __S32_TYPE
+#define __TIMER_T_TYPE void *
+#define __BLKSIZE_T_TYPE __SYSCALL_SLONG_TYPE
+#define __FSID_T_TYPE struct { int __val[2]; }
+#define __SSIZE_T_TYPE __SWORD_TYPE
+#define __CPU_MASK_TYPE __SYSCALL_ULONG_TYPE
+
+#ifdef __x86_64__
+/* Tell the libc code that off_t and off64_t are actually the same type
+ for all ABI purposes, even if possibly expressed as different base types
+ for C type-checking purposes. */
+# define __OFF_T_MATCHES_OFF64_T 1
+
+/* Same for ino_t and ino64_t. */
+# define __INO_T_MATCHES_INO64_T 1
+
+/* And for __rlim_t and __rlim64_t. */
+# define __RLIM_T_MATCHES_RLIM64_T 1
+
+/* And for fsblkcnt_t, fsblkcnt64_t, fsfilcnt_t and fsfilcnt64_t. */
+# define __STATFS_MATCHES_STATFS64 1
+
+/* And for getitimer, setitimer and rusage */
+# define __KERNEL_OLD_TIMEVAL_MATCHES_TIMEVAL64 1
+#else
+# define __RLIM_T_MATCHES_RLIM64_T 0
+
+# define __STATFS_MATCHES_STATFS64 0
+
+# define __KERNEL_OLD_TIMEVAL_MATCHES_TIMEVAL64 0
+#endif
+
+/* Number of descriptors that can fit in an `fd_set'. */
+#define __FD_SETSIZE 1024
+
+
+#endif /* bits/typesizes.h */
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@typesizes.h.blob b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@typesizes.h.blob
new file mode 100644
index 0000000..a644bd0
Binary files /dev/null and b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@typesizes.h.blob differ
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@uintn-identity.h b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@uintn-identity.h
new file mode 100644
index 0000000..c2d523c
--- /dev/null
+++ b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@uintn-identity.h
@@ -0,0 +1,50 @@
+/* Inline functions to return unsigned integer values unchanged.
+ Copyright (C) 2017-2023 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ . */
+
+#if !defined _NETINET_IN_H && !defined _ENDIAN_H
+# error "Never use directly; include or instead."
+#endif
+
+#ifndef _BITS_UINTN_IDENTITY_H
+#define _BITS_UINTN_IDENTITY_H 1
+
+#include
+
+/* These inline functions are to ensure the appropriate type
+ conversions and associated diagnostics from macros that convert to
+ a given endianness. */
+
+static __inline __uint16_t
+__uint16_identity (__uint16_t __x)
+{
+ return __x;
+}
+
+static __inline __uint32_t
+__uint32_identity (__uint32_t __x)
+{
+ return __x;
+}
+
+static __inline __uint64_t
+__uint64_identity (__uint64_t __x)
+{
+ return __x;
+}
+
+#endif /* _BITS_UINTN_IDENTITY_H. */
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@uintn-identity.h.blob b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@uintn-identity.h.blob
new file mode 100644
index 0000000..6e22eba
Binary files /dev/null and b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@uintn-identity.h.blob differ
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@waitflags.h b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@waitflags.h
new file mode 100644
index 0000000..7513427
--- /dev/null
+++ b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@waitflags.h
@@ -0,0 +1,39 @@
+/* Definitions of flag bits for `waitpid' et al.
+ Copyright (C) 1992-2023 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ . */
+
+#if !defined _SYS_WAIT_H && !defined _STDLIB_H
+# error "Never include directly; use instead."
+#endif
+
+
+/* Bits in the third argument to `waitpid'. */
+#define WNOHANG 1 /* Don't block waiting. */
+#define WUNTRACED 2 /* Report status of stopped children. */
+
+/* Bits in the fourth argument to `waitid'. */
+#if defined __USE_XOPEN_EXTENDED || defined __USE_XOPEN2K8
+# define WSTOPPED 2 /* Report stopped child (same as WUNTRACED). */
+# define WEXITED 4 /* Report dead child. */
+# define WCONTINUED 8 /* Report continued child. */
+# define WNOWAIT 0x01000000 /* Don't reap, just poll status. */
+#endif
+
+#define __WNOTHREAD 0x20000000 /* Don't wait on children of other threads
+ in this group */
+#define __WALL 0x40000000 /* Wait for any child. */
+#define __WCLONE 0x80000000 /* Wait for cloned process. */
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@waitflags.h.blob b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@waitflags.h.blob
new file mode 100644
index 0000000..ee6e012
Binary files /dev/null and b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@waitflags.h.blob differ
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@waitstatus.h b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@waitstatus.h
new file mode 100644
index 0000000..ec7c076
--- /dev/null
+++ b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@waitstatus.h
@@ -0,0 +1,59 @@
+/* Definitions of status bits for `wait' et al.
+ Copyright (C) 1992-2023 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ . */
+
+#if !defined _SYS_WAIT_H && !defined _STDLIB_H
+# error "Never include directly; use instead."
+#endif
+
+
+/* Everything extant so far uses these same bits. */
+
+
+/* If WIFEXITED(STATUS), the low-order 8 bits of the status. */
+#define __WEXITSTATUS(status) (((status) & 0xff00) >> 8)
+
+/* If WIFSIGNALED(STATUS), the terminating signal. */
+#define __WTERMSIG(status) ((status) & 0x7f)
+
+/* If WIFSTOPPED(STATUS), the signal that stopped the child. */
+#define __WSTOPSIG(status) __WEXITSTATUS(status)
+
+/* Nonzero if STATUS indicates normal termination. */
+#define __WIFEXITED(status) (__WTERMSIG(status) == 0)
+
+/* Nonzero if STATUS indicates termination by a signal. */
+#define __WIFSIGNALED(status) \
+ (((signed char) (((status) & 0x7f) + 1) >> 1) > 0)
+
+/* Nonzero if STATUS indicates the child is stopped. */
+#define __WIFSTOPPED(status) (((status) & 0xff) == 0x7f)
+
+/* Nonzero if STATUS indicates the child continued after a stop. We only
+ define this if provides the WCONTINUED flag bit. */
+#ifdef WCONTINUED
+# define __WIFCONTINUED(status) ((status) == __W_CONTINUED)
+#endif
+
+/* Nonzero if STATUS indicates the child dumped core. */
+#define __WCOREDUMP(status) ((status) & __WCOREFLAG)
+
+/* Macros for constructing status values. */
+#define __W_EXITCODE(ret, sig) ((ret) << 8 | (sig))
+#define __W_STOPCODE(sig) ((sig) << 8 | 0x7f)
+#define __W_CONTINUED 0xffff
+#define __WCOREFLAG 0x80
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@waitstatus.h.blob b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@waitstatus.h.blob
new file mode 100644
index 0000000..bae451f
Binary files /dev/null and b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@waitstatus.h.blob differ
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@wchar.h b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@wchar.h
new file mode 100644
index 0000000..ce951d9
--- /dev/null
+++ b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@wchar.h
@@ -0,0 +1,49 @@
+/* wchar_t type related definitions.
+ Copyright (C) 2000-2023 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ . */
+
+#ifndef _BITS_WCHAR_H
+#define _BITS_WCHAR_H 1
+
+/* The fallback definitions, for when __WCHAR_MAX__ or __WCHAR_MIN__
+ are not defined, give the right value and type as long as both int
+ and wchar_t are 32-bit types. Adding L'\0' to a constant value
+ ensures that the type is correct; it is necessary to use (L'\0' +
+ 0) rather than just L'\0' so that the type in C++ is the promoted
+ version of wchar_t rather than the distinct wchar_t type itself.
+ Because wchar_t in preprocessor #if expressions is treated as
+ intmax_t or uintmax_t, the expression (L'\0' - 1) would have the
+ wrong value for WCHAR_MAX in such expressions and so cannot be used
+ to define __WCHAR_MAX in the unsigned case. */
+
+#ifdef __WCHAR_MAX__
+# define __WCHAR_MAX __WCHAR_MAX__
+#elif L'\0' - 1 > 0
+# define __WCHAR_MAX (0xffffffffu + L'\0')
+#else
+# define __WCHAR_MAX (0x7fffffff + L'\0')
+#endif
+
+#ifdef __WCHAR_MIN__
+# define __WCHAR_MIN __WCHAR_MIN__
+#elif L'\0' - 1 > 0
+# define __WCHAR_MIN (L'\0' + 0)
+#else
+# define __WCHAR_MIN (-__WCHAR_MAX - 1)
+#endif
+
+#endif /* bits/wchar.h */
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@wchar.h.blob b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@wchar.h.blob
new file mode 100644
index 0000000..d865a39
Binary files /dev/null and b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@wchar.h.blob differ
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@wctype-wchar.h b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@wctype-wchar.h
new file mode 100644
index 0000000..9140a8d
--- /dev/null
+++ b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@wctype-wchar.h
@@ -0,0 +1,173 @@
+/* Copyright (C) 1996-2023 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ . */
+
+/*
+ * ISO C99 Standard: 7.25
+ * Wide character classification and mapping utilities
+ */
+
+#ifndef _BITS_WCTYPE_WCHAR_H
+#define _BITS_WCTYPE_WCHAR_H 1
+
+#if !defined _WCTYPE_H && !defined _WCHAR_H
+#error "Never include directly; include or instead."
+#endif
+
+#include
+#include
+
+/* The definitions in this header are specified to appear in
+ in ISO C99, but in in Unix98. _GNU_SOURCE follows C99. */
+
+/* Scalar type that can hold values which represent locale-specific
+ character classifications. */
+typedef unsigned long int wctype_t;
+
+# ifndef _ISwbit
+/* The characteristics are stored always in network byte order (big
+ endian). We define the bit value interpretations here dependent on the
+ machine's byte order. */
+
+# include
+# if __BYTE_ORDER == __BIG_ENDIAN
+# define _ISwbit(bit) (1 << (bit))
+# else /* __BYTE_ORDER == __LITTLE_ENDIAN */
+# define _ISwbit(bit) \
+ ((bit) < 8 ? (int) ((1UL << (bit)) << 24) \
+ : ((bit) < 16 ? (int) ((1UL << (bit)) << 8) \
+ : ((bit) < 24 ? (int) ((1UL << (bit)) >> 8) \
+ : (int) ((1UL << (bit)) >> 24))))
+# endif
+
+enum
+{
+ __ISwupper = 0, /* UPPERCASE. */
+ __ISwlower = 1, /* lowercase. */
+ __ISwalpha = 2, /* Alphabetic. */
+ __ISwdigit = 3, /* Numeric. */
+ __ISwxdigit = 4, /* Hexadecimal numeric. */
+ __ISwspace = 5, /* Whitespace. */
+ __ISwprint = 6, /* Printing. */
+ __ISwgraph = 7, /* Graphical. */
+ __ISwblank = 8, /* Blank (usually SPC and TAB). */
+ __ISwcntrl = 9, /* Control character. */
+ __ISwpunct = 10, /* Punctuation. */
+ __ISwalnum = 11, /* Alphanumeric. */
+
+ _ISwupper = _ISwbit (__ISwupper), /* UPPERCASE. */
+ _ISwlower = _ISwbit (__ISwlower), /* lowercase. */
+ _ISwalpha = _ISwbit (__ISwalpha), /* Alphabetic. */
+ _ISwdigit = _ISwbit (__ISwdigit), /* Numeric. */
+ _ISwxdigit = _ISwbit (__ISwxdigit), /* Hexadecimal numeric. */
+ _ISwspace = _ISwbit (__ISwspace), /* Whitespace. */
+ _ISwprint = _ISwbit (__ISwprint), /* Printing. */
+ _ISwgraph = _ISwbit (__ISwgraph), /* Graphical. */
+ _ISwblank = _ISwbit (__ISwblank), /* Blank (usually SPC and TAB). */
+ _ISwcntrl = _ISwbit (__ISwcntrl), /* Control character. */
+ _ISwpunct = _ISwbit (__ISwpunct), /* Punctuation. */
+ _ISwalnum = _ISwbit (__ISwalnum) /* Alphanumeric. */
+};
+# endif /* Not _ISwbit */
+
+
+__BEGIN_DECLS
+
+/*
+ * Wide-character classification functions: 7.15.2.1.
+ */
+
+/* Test for any wide character for which `iswalpha' or `iswdigit' is
+ true. */
+extern int iswalnum (wint_t __wc) __THROW;
+
+/* Test for any wide character for which `iswupper' or 'iswlower' is
+ true, or any wide character that is one of a locale-specific set of
+ wide-characters for which none of `iswcntrl', `iswdigit',
+ `iswpunct', or `iswspace' is true. */
+extern int iswalpha (wint_t __wc) __THROW;
+
+/* Test for any control wide character. */
+extern int iswcntrl (wint_t __wc) __THROW;
+
+/* Test for any wide character that corresponds to a decimal-digit
+ character. */
+extern int iswdigit (wint_t __wc) __THROW;
+
+/* Test for any wide character for which `iswprint' is true and
+ `iswspace' is false. */
+extern int iswgraph (wint_t __wc) __THROW;
+
+/* Test for any wide character that corresponds to a lowercase letter
+ or is one of a locale-specific set of wide characters for which
+ none of `iswcntrl', `iswdigit', `iswpunct', or `iswspace' is true. */
+extern int iswlower (wint_t __wc) __THROW;
+
+/* Test for any printing wide character. */
+extern int iswprint (wint_t __wc) __THROW;
+
+/* Test for any printing wide character that is one of a
+ locale-specific et of wide characters for which neither `iswspace'
+ nor `iswalnum' is true. */
+extern int iswpunct (wint_t __wc) __THROW;
+
+/* Test for any wide character that corresponds to a locale-specific
+ set of wide characters for which none of `iswalnum', `iswgraph', or
+ `iswpunct' is true. */
+extern int iswspace (wint_t __wc) __THROW;
+
+/* Test for any wide character that corresponds to an uppercase letter
+ or is one of a locale-specific set of wide character for which none
+ of `iswcntrl', `iswdigit', `iswpunct', or `iswspace' is true. */
+extern int iswupper (wint_t __wc) __THROW;
+
+/* Test for any wide character that corresponds to a hexadecimal-digit
+ character equivalent to that performed be the functions described
+ in the previous subclause. */
+extern int iswxdigit (wint_t __wc) __THROW;
+
+/* Test for any wide character that corresponds to a standard blank
+ wide character or a locale-specific set of wide characters for
+ which `iswalnum' is false. */
+# ifdef __USE_ISOC99
+extern int iswblank (wint_t __wc) __THROW;
+# endif
+
+/*
+ * Extensible wide-character classification functions: 7.15.2.2.
+ */
+
+/* Construct value that describes a class of wide characters identified
+ by the string argument PROPERTY. */
+extern wctype_t wctype (const char *__property) __THROW;
+
+/* Determine whether the wide-character WC has the property described by
+ DESC. */
+extern int iswctype (wint_t __wc, wctype_t __desc) __THROW;
+
+/*
+ * Wide-character case-mapping functions: 7.15.3.1.
+ */
+
+/* Converts an uppercase letter to the corresponding lowercase letter. */
+extern wint_t towlower (wint_t __wc) __THROW;
+
+/* Converts an lowercase letter to the corresponding uppercase letter. */
+extern wint_t towupper (wint_t __wc) __THROW;
+
+__END_DECLS
+
+#endif /* bits/wctype-wchar.h. */
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@wctype-wchar.h.blob b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@wctype-wchar.h.blob
new file mode 100644
index 0000000..16204de
Binary files /dev/null and b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@wctype-wchar.h.blob differ
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@wordsize.h b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@wordsize.h
new file mode 100644
index 0000000..70f652b
--- /dev/null
+++ b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@wordsize.h
@@ -0,0 +1,17 @@
+/* Determine the wordsize from the preprocessor defines. */
+
+#if defined __x86_64__ && !defined __ILP32__
+# define __WORDSIZE 64
+#else
+# define __WORDSIZE 32
+#define __WORDSIZE32_SIZE_ULONG 0
+#define __WORDSIZE32_PTRDIFF_LONG 0
+#endif
+
+#ifdef __x86_64__
+# define __WORDSIZE_TIME64_COMPAT32 1
+/* Both x86-64 and x32 use the 64-bit system call interface. */
+# define __SYSCALL_WORDSIZE 64
+#else
+# define __WORDSIZE_TIME64_COMPAT32 0
+#endif
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@wordsize.h.blob b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@wordsize.h.blob
new file mode 100644
index 0000000..bf14929
Binary files /dev/null and b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@bits@wordsize.h.blob differ
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@c++@13.1.1@backward@binders.h b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@c++@13.1.1@backward@binders.h
new file mode 100644
index 0000000..2fbfcd4
--- /dev/null
+++ b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@c++@13.1.1@backward@binders.h
@@ -0,0 +1,184 @@
+// Functor implementations -*- C++ -*-
+
+// Copyright (C) 2001-2023 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
+// .
+
+/*
+ *
+ * Copyright (c) 1994
+ * Hewlett-Packard Company
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation. Hewlett-Packard Company makes no
+ * representations about the suitability of this software for any
+ * purpose. It is provided "as is" without express or implied warranty.
+ *
+ *
+ * Copyright (c) 1996-1998
+ * Silicon Graphics Computer Systems, Inc.
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation. Silicon Graphics makes no
+ * representations about the suitability of this software for any
+ * purpose. It is provided "as is" without express or implied warranty.
+ */
+
+/** @file backward/binders.h
+ * This is an internal header file, included by other library headers.
+ * Do not attempt to use it directly. @headername{functional}
+ */
+
+#ifndef _BACKWARD_BINDERS_H
+#define _BACKWARD_BINDERS_H 1
+
+// Suppress deprecated warning for this file.
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+ // 20.3.6 binders
+ /** @defgroup binders Binder Classes
+ * @ingroup functors
+ *
+ * Binders turn functions/functors with two arguments into functors
+ * with a single argument, storing an argument to be applied later.
+ * For example, a variable @c B of type @c binder1st is constructed
+ * from a functor @c f and an argument @c x. Later, B's @c
+ * operator() is called with a single argument @c y. The return
+ * value is the value of @c f(x,y). @c B can be @a called with
+ * various arguments (y1, y2, ...) and will in turn call @c
+ * f(x,y1), @c f(x,y2), ...
+ *
+ * The function @c bind1st is provided to save some typing. It takes the
+ * function and an argument as parameters, and returns an instance of
+ * @c binder1st.
+ *
+ * The type @c binder2nd and its creator function @c bind2nd do the same
+ * thing, but the stored argument is passed as the second parameter instead
+ * of the first, e.g., @c bind2nd(std::minus(),1.3) will create a
+ * functor whose @c operator() accepts a floating-point number, subtracts
+ * 1.3 from it, and returns the result. (If @c bind1st had been used,
+ * the functor would perform 1.3 - x instead.
+ *
+ * Creator-wrapper functions like @c bind1st are intended to be used in
+ * calling algorithms. Their return values will be temporary objects.
+ * (The goal is to not require you to type names like
+ * @c std::binder1st> for declaring a variable to hold the
+ * return value from @c bind1st(std::plus(),5).
+ *
+ * These become more useful when combined with the composition functions.
+ *
+ * These functions are deprecated in C++11 and can be replaced by
+ * @c std::bind (or @c std::tr1::bind) which is more powerful and flexible,
+ * supporting functions with any number of arguments. Uses of @c bind1st
+ * can be replaced by @c std::bind(f, x, std::placeholders::_1) and
+ * @c bind2nd by @c std::bind(f, std::placeholders::_1, x).
+ * @{
+ */
+ /// One of the @link binders binder functors@endlink.
+ template
+ class binder1st
+ : public unary_function
+ {
+ protected:
+ _Operation op;
+ typename _Operation::first_argument_type value;
+
+ public:
+ binder1st(const _Operation& __x,
+ const typename _Operation::first_argument_type& __y)
+ : op(__x), value(__y) { }
+
+ typename _Operation::result_type
+ operator()(const typename _Operation::second_argument_type& __x) const
+ { return op(value, __x); }
+
+ // _GLIBCXX_RESOLVE_LIB_DEFECTS
+ // 109. Missing binders for non-const sequence elements
+ typename _Operation::result_type
+ operator()(typename _Operation::second_argument_type& __x) const
+ { return op(value, __x); }
+ } _GLIBCXX11_DEPRECATED_SUGGEST("std::bind");
+
+ /// One of the @link binders binder functors@endlink.
+ template
+ _GLIBCXX11_DEPRECATED_SUGGEST("std::bind")
+ inline binder1st<_Operation>
+ bind1st(const _Operation& __fn, const _Tp& __x)
+ {
+ typedef typename _Operation::first_argument_type _Arg1_type;
+ return binder1st<_Operation>(__fn, _Arg1_type(__x));
+ }
+
+ /// One of the @link binders binder functors@endlink.
+ template
+ class binder2nd
+ : public unary_function
+ {
+ protected:
+ _Operation op;
+ typename _Operation::second_argument_type value;
+
+ public:
+ binder2nd(const _Operation& __x,
+ const typename _Operation::second_argument_type& __y)
+ : op(__x), value(__y) { }
+
+ typename _Operation::result_type
+ operator()(const typename _Operation::first_argument_type& __x) const
+ { return op(__x, value); }
+
+ // _GLIBCXX_RESOLVE_LIB_DEFECTS
+ // 109. Missing binders for non-const sequence elements
+ typename _Operation::result_type
+ operator()(typename _Operation::first_argument_type& __x) const
+ { return op(__x, value); }
+ } _GLIBCXX11_DEPRECATED_SUGGEST("std::bind");
+
+ /// One of the @link binders binder functors@endlink.
+ template
+ _GLIBCXX11_DEPRECATED_SUGGEST("std::bind")
+ inline binder2nd<_Operation>
+ bind2nd(const _Operation& __fn, const _Tp& __x)
+ {
+ typedef typename _Operation::second_argument_type _Arg2_type;
+ return binder2nd<_Operation>(__fn, _Arg2_type(__x));
+ }
+ /** @} */
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#pragma GCC diagnostic pop
+
+#endif /* _BACKWARD_BINDERS_H */
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@c++@13.1.1@backward@binders.h.blob b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@c++@13.1.1@backward@binders.h.blob
new file mode 100644
index 0000000..fbe788d
Binary files /dev/null and b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@c++@13.1.1@backward@binders.h.blob differ
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@c++@13.1.1@bit b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@c++@13.1.1@bit
new file mode 100644
index 0000000..5eb4021
--- /dev/null
+++ b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@c++@13.1.1@bit
@@ -0,0 +1,482 @@
+// -*- C++ -*-
+
+// Copyright (C) 2018-2023 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
+// .
+
+/** @file include/bit
+ * This is a Standard C++ Library header.
+ */
+
+#ifndef _GLIBCXX_BIT
+#define _GLIBCXX_BIT 1
+
+#pragma GCC system_header
+
+#if __cplusplus >= 201402L
+
+#include
+
+#if _GLIBCXX_HOSTED || __has_include()
+# include
+#else
+# include
+/// @cond undocumented
+namespace __gnu_cxx
+{
+ template
+ struct __int_traits
+ {
+ static constexpr int __digits = std::numeric_limits<_Tp>::digits;
+ static constexpr _Tp __max = std::numeric_limits<_Tp>::max();
+ };
+}
+/// @endcond
+#endif
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+ /**
+ * @defgroup bit_manip Bit manipulation
+ * @ingroup numerics
+ *
+ * Utilities for examining and manipulating individual bits.
+ *
+ * @{
+ */
+
+#if __cplusplus > 201703l && __has_builtin(__builtin_bit_cast)
+#define __cpp_lib_bit_cast 201806L
+
+ /// Create a value of type `To` from the bits of `from`.
+ /**
+ * @tparam _To A trivially-copyable type.
+ * @param __from A trivially-copyable object of the same size as `_To`.
+ * @return An object of type `_To`.
+ * @since C++20
+ */
+ template
+ [[nodiscard]]
+ constexpr _To
+ bit_cast(const _From& __from) noexcept
+#ifdef __cpp_concepts
+ requires (sizeof(_To) == sizeof(_From))
+ && __is_trivially_copyable(_To) && __is_trivially_copyable(_From)
+#endif
+ {
+ return __builtin_bit_cast(_To, __from);
+ }
+#endif
+
+#if __cplusplus > 202002L
+#define __cpp_lib_byteswap 202110L
+
+ /// Reverse order of bytes in the object representation of `value`.
+ /**
+ * @tparam _Tp An integral type.
+ * @param __value An object of integer type.
+ * @return An object of the same type, with the bytes reversed.
+ * @since C++23
+ */
+ template
+ [[nodiscard]]
+ constexpr enable_if_t::value, _Tp>
+ byteswap(_Tp __value) noexcept
+ {
+ if constexpr (sizeof(_Tp) == 1)
+ return __value;
+#if __cpp_if_consteval >= 202106L && __CHAR_BIT__ == 8
+ if !consteval
+ {
+ if constexpr (sizeof(_Tp) == 2)
+ return __builtin_bswap16(__value);
+ if constexpr (sizeof(_Tp) == 4)
+ return __builtin_bswap32(__value);
+ if constexpr (sizeof(_Tp) == 8)
+ return __builtin_bswap64(__value);
+ if constexpr (sizeof(_Tp) == 16)
+#if __has_builtin(__builtin_bswap128)
+ return __builtin_bswap128(__value);
+#else
+ return (__builtin_bswap64(__value >> 64)
+ | (static_cast<_Tp>(__builtin_bswap64(__value)) << 64));
+#endif
+ }
+#endif
+
+ // Fallback implementation that handles even __int24 etc.
+ using _Up = typename __make_unsigned<__remove_cv_t<_Tp>>::__type;
+ size_t __diff = __CHAR_BIT__ * (sizeof(_Tp) - 1);
+ _Up __mask1 = static_cast(~0);
+ _Up __mask2 = __mask1 << __diff;
+ _Up __val = __value;
+ for (size_t __i = 0; __i < sizeof(_Tp) / 2; ++__i)
+ {
+ _Up __byte1 = __val & __mask1;
+ _Up __byte2 = __val & __mask2;
+ __val = (__val ^ __byte1 ^ __byte2
+ ^ (__byte1 << __diff) ^ (__byte2 >> __diff));
+ __mask1 <<= __CHAR_BIT__;
+ __mask2 >>= __CHAR_BIT__;
+ __diff -= 2 * __CHAR_BIT__;
+ }
+ return __val;
+ }
+#endif
+
+ /// @cond undocumented
+
+ template
+ constexpr _Tp
+ __rotl(_Tp __x, int __s) noexcept
+ {
+ constexpr auto _Nd = __gnu_cxx::__int_traits<_Tp>::__digits;
+ if _GLIBCXX17_CONSTEXPR ((_Nd & (_Nd - 1)) == 0)
+ {
+ // Variant for power of two _Nd which the compiler can
+ // easily pattern match.
+ constexpr unsigned __uNd = _Nd;
+ const unsigned __r = __s;
+ return (__x << (__r % __uNd)) | (__x >> ((-__r) % __uNd));
+ }
+ const int __r = __s % _Nd;
+ if (__r == 0)
+ return __x;
+ else if (__r > 0)
+ return (__x << __r) | (__x >> ((_Nd - __r) % _Nd));
+ else
+ return (__x >> -__r) | (__x << ((_Nd + __r) % _Nd)); // rotr(x, -r)
+ }
+
+ template
+ constexpr _Tp
+ __rotr(_Tp __x, int __s) noexcept
+ {
+ constexpr auto _Nd = __gnu_cxx::__int_traits<_Tp>::__digits;
+ if _GLIBCXX17_CONSTEXPR ((_Nd & (_Nd - 1)) == 0)
+ {
+ // Variant for power of two _Nd which the compiler can
+ // easily pattern match.
+ constexpr unsigned __uNd = _Nd;
+ const unsigned __r = __s;
+ return (__x >> (__r % __uNd)) | (__x << ((-__r) % __uNd));
+ }
+ const int __r = __s % _Nd;
+ if (__r == 0)
+ return __x;
+ else if (__r > 0)
+ return (__x >> __r) | (__x << ((_Nd - __r) % _Nd));
+ else
+ return (__x << -__r) | (__x >> ((_Nd + __r) % _Nd)); // rotl(x, -r)
+ }
+
+ template
+ constexpr int
+ __countl_zero(_Tp __x) noexcept
+ {
+ using __gnu_cxx::__int_traits;
+ constexpr auto _Nd = __int_traits<_Tp>::__digits;
+
+ if (__x == 0)
+ return _Nd;
+
+ constexpr auto _Nd_ull = __int_traits::__digits;
+ constexpr auto _Nd_ul = __int_traits::__digits;
+ constexpr auto _Nd_u = __int_traits::__digits;
+
+ if _GLIBCXX17_CONSTEXPR (_Nd <= _Nd_u)
+ {
+ constexpr int __diff = _Nd_u - _Nd;
+ return __builtin_clz(__x) - __diff;
+ }
+ else if _GLIBCXX17_CONSTEXPR (_Nd <= _Nd_ul)
+ {
+ constexpr int __diff = _Nd_ul - _Nd;
+ return __builtin_clzl(__x) - __diff;
+ }
+ else if _GLIBCXX17_CONSTEXPR (_Nd <= _Nd_ull)
+ {
+ constexpr int __diff = _Nd_ull - _Nd;
+ return __builtin_clzll(__x) - __diff;
+ }
+ else // (_Nd > _Nd_ull)
+ {
+ static_assert(_Nd <= (2 * _Nd_ull),
+ "Maximum supported integer size is 128-bit");
+
+ unsigned long long __high = __x >> _Nd_ull;
+ if (__high != 0)
+ {
+ constexpr int __diff = (2 * _Nd_ull) - _Nd;
+ return __builtin_clzll(__high) - __diff;
+ }
+ constexpr auto __max_ull = __int_traits::__max;
+ unsigned long long __low = __x & __max_ull;
+ return (_Nd - _Nd_ull) + __builtin_clzll(__low);
+ }
+ }
+
+ template
+ constexpr int
+ __countl_one(_Tp __x) noexcept
+ {
+ return std::__countl_zero<_Tp>((_Tp)~__x);
+ }
+
+ template
+ constexpr int
+ __countr_zero(_Tp __x) noexcept
+ {
+ using __gnu_cxx::__int_traits;
+ constexpr auto _Nd = __int_traits<_Tp>::__digits;
+
+ if (__x == 0)
+ return _Nd;
+
+ constexpr auto _Nd_ull = __int_traits::__digits;
+ constexpr auto _Nd_ul = __int_traits::__digits;
+ constexpr auto _Nd_u = __int_traits::__digits;
+
+ if _GLIBCXX17_CONSTEXPR (_Nd <= _Nd_u)
+ return __builtin_ctz(__x);
+ else if _GLIBCXX17_CONSTEXPR (_Nd <= _Nd_ul)
+ return __builtin_ctzl(__x);
+ else if _GLIBCXX17_CONSTEXPR (_Nd <= _Nd_ull)
+ return __builtin_ctzll(__x);
+ else // (_Nd > _Nd_ull)
+ {
+ static_assert(_Nd <= (2 * _Nd_ull),
+ "Maximum supported integer size is 128-bit");
+
+ constexpr auto __max_ull = __int_traits::__max;
+ unsigned long long __low = __x & __max_ull;
+ if (__low != 0)
+ return __builtin_ctzll(__low);
+ unsigned long long __high = __x >> _Nd_ull;
+ return __builtin_ctzll(__high) + _Nd_ull;
+ }
+ }
+
+ template
+ constexpr int
+ __countr_one(_Tp __x) noexcept
+ {
+ return std::__countr_zero((_Tp)~__x);
+ }
+
+ template
+ constexpr int
+ __popcount(_Tp __x) noexcept
+ {
+ using __gnu_cxx::__int_traits;
+ constexpr auto _Nd = __int_traits<_Tp>::__digits;
+
+ constexpr auto _Nd_ull = __int_traits::__digits;
+ constexpr auto _Nd_ul = __int_traits::__digits;
+ constexpr auto _Nd_u = __int_traits::__digits;
+
+ if _GLIBCXX17_CONSTEXPR (_Nd <= _Nd_u)
+ return __builtin_popcount(__x);
+ else if _GLIBCXX17_CONSTEXPR (_Nd <= _Nd_ul)
+ return __builtin_popcountl(__x);
+ else if _GLIBCXX17_CONSTEXPR (_Nd <= _Nd_ull)
+ return __builtin_popcountll(__x);
+ else // (_Nd > _Nd_ull)
+ {
+ static_assert(_Nd <= (2 * _Nd_ull),
+ "Maximum supported integer size is 128-bit");
+
+ constexpr auto __max_ull = __int_traits::__max;
+ unsigned long long __low = __x & __max_ull;
+ unsigned long long __high = __x >> _Nd_ull;
+ return __builtin_popcountll(__low) + __builtin_popcountll(__high);
+ }
+ }
+
+ template
+ constexpr bool
+ __has_single_bit(_Tp __x) noexcept
+ { return std::__popcount(__x) == 1; }
+
+ template
+ constexpr _Tp
+ __bit_ceil(_Tp __x) noexcept
+ {
+ using __gnu_cxx::__int_traits;
+ constexpr auto _Nd = __int_traits<_Tp>::__digits;
+ if (__x == 0 || __x == 1)
+ return 1;
+ auto __shift_exponent = _Nd - std::__countl_zero((_Tp)(__x - 1u));
+ // If the shift exponent equals _Nd then the correct result is not
+ // representable as a value of _Tp, and so the result is undefined.
+ // Want that undefined behaviour to be detected in constant expressions,
+ // by UBSan, and by debug assertions.
+ if (!std::__is_constant_evaluated())
+ {
+ __glibcxx_assert( __shift_exponent != __int_traits<_Tp>::__digits );
+ }
+
+ using __promoted_type = decltype(__x << 1);
+ if _GLIBCXX17_CONSTEXPR (!is_same<__promoted_type, _Tp>::value)
+ {
+ // If __x undergoes integral promotion then shifting by _Nd is
+ // not undefined. In order to make the shift undefined, so that
+ // it is diagnosed in constant expressions and by UBsan, we also
+ // need to "promote" the shift exponent to be too large for the
+ // promoted type.
+ const int __extra_exp = sizeof(__promoted_type) / sizeof(_Tp) / 2;
+ __shift_exponent |= (__shift_exponent & _Nd) << __extra_exp;
+ }
+ return (_Tp)1u << __shift_exponent;
+ }
+
+ template
+ constexpr _Tp
+ __bit_floor(_Tp __x) noexcept
+ {
+ constexpr auto _Nd = __gnu_cxx::__int_traits<_Tp>::__digits;
+ if (__x == 0)
+ return 0;
+ return (_Tp)1u << (_Nd - std::__countl_zero((_Tp)(__x >> 1)));
+ }
+
+ template
+ constexpr int
+ __bit_width(_Tp __x) noexcept
+ {
+ constexpr auto _Nd = __gnu_cxx::__int_traits<_Tp>::__digits;
+ return _Nd - std::__countl_zero(__x);
+ }
+
+ /// @endcond
+
+#if __cplusplus > 201703L
+
+#define __cpp_lib_bitops 201907L
+
+ /// @cond undocumented
+ template
+ using _If_is_unsigned_integer
+ = enable_if_t<__is_unsigned_integer<_Tp>::value, _Up>;
+ /// @endcond
+
+ // [bit.rot], rotating
+
+ /// Rotate `x` to the left by `s` bits.
+ template
+ [[nodiscard]] constexpr _If_is_unsigned_integer<_Tp>
+ rotl(_Tp __x, int __s) noexcept
+ { return std::__rotl(__x, __s); }
+
+ /// Rotate `x` to the right by `s` bits.
+ template
+ [[nodiscard]] constexpr _If_is_unsigned_integer<_Tp>
+ rotr(_Tp __x, int __s) noexcept
+ { return std::__rotr(__x, __s); }
+
+ // [bit.count], counting
+
+ /// The number of contiguous zero bits, starting from the highest bit.
+ template
+ constexpr _If_is_unsigned_integer<_Tp, int>
+ countl_zero(_Tp __x) noexcept
+ { return std::__countl_zero(__x); }
+
+ /// The number of contiguous one bits, starting from the highest bit.
+ template
+ constexpr _If_is_unsigned_integer<_Tp, int>
+ countl_one(_Tp __x) noexcept
+ { return std::__countl_one(__x); }
+
+ /// The number of contiguous zero bits, starting from the lowest bit.
+ template
+ constexpr _If_is_unsigned_integer<_Tp, int>
+ countr_zero(_Tp __x) noexcept
+ { return std::__countr_zero(__x); }
+
+ /// The number of contiguous one bits, starting from the lowest bit.
+ template
+ constexpr _If_is_unsigned_integer<_Tp, int>
+ countr_one(_Tp __x) noexcept
+ { return std::__countr_one(__x); }
+
+ /// The number of bits set in `x`.
+ template
+ constexpr _If_is_unsigned_integer<_Tp, int>
+ popcount(_Tp __x) noexcept
+ { return std::__popcount(__x); }
+
+ // [bit.pow.two], integral powers of 2
+
+#define __cpp_lib_int_pow2 202002L
+
+ /// True if `x` is a power of two, false otherwise.
+ template
+ constexpr _If_is_unsigned_integer<_Tp, bool>
+ has_single_bit(_Tp __x) noexcept
+ { return std::__has_single_bit(__x); }
+
+ /// The smallest power-of-two not less than `x`.
+ template
+ constexpr _If_is_unsigned_integer<_Tp>
+ bit_ceil(_Tp __x) noexcept
+ { return std::__bit_ceil(__x); }
+
+ /// The largest power-of-two not greater than `x`.
+ template
+ constexpr _If_is_unsigned_integer<_Tp>
+ bit_floor(_Tp __x) noexcept
+ { return std::__bit_floor(__x); }
+
+ // _GLIBCXX_RESOLVE_LIB_DEFECTS
+ // 3656. Inconsistent bit operations returning a count
+ /// The smallest integer greater than the base-2 logarithm of `x`.
+ template
+ constexpr _If_is_unsigned_integer<_Tp, int>
+ bit_width(_Tp __x) noexcept
+ { return std::__bit_width(__x); }
+
+#define __cpp_lib_endian 201907L
+
+ /// Byte order constants
+ /**
+ * The platform endianness can be checked by comparing `std::endian::native`
+ * to one of `std::endian::big` or `std::endian::little`.
+ *
+ * @since C++20
+ */
+ enum class endian
+ {
+ little = __ORDER_LITTLE_ENDIAN__,
+ big = __ORDER_BIG_ENDIAN__,
+ native = __BYTE_ORDER__
+ };
+#endif // C++2a
+
+ /// @}
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace std
+
+#endif // C++14
+#endif // _GLIBCXX_BIT
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@c++@13.1.1@bit.blob b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@c++@13.1.1@bit.blob
new file mode 100644
index 0000000..471f865
Binary files /dev/null and b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@c++@13.1.1@bit.blob differ
diff --git a/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@c++@13.1.1@bits@alloc_traits.h b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@c++@13.1.1@bits@alloc_traits.h
new file mode 100644
index 0000000..cd91d15
--- /dev/null
+++ b/.ccls-cache/@@home@tz@code@git@github@Mate-Rechner/@usr@include@c++@13.1.1@bits@alloc_traits.h
@@ -0,0 +1,954 @@
+// Allocator traits -*- C++ -*-
+
+// Copyright (C) 2011-2023 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
+// .
+
+/** @file bits/alloc_traits.h
+ * This is an internal header file, included by other library headers.
+ * Do not attempt to use it directly. @headername{memory}
+ */
+
+#ifndef _ALLOC_TRAITS_H
+#define _ALLOC_TRAITS_H 1
+
+#include
+#include
+#if __cplusplus >= 201103L
+# include
+# include
+# if _GLIBCXX_HOSTED
+# include
+# endif
+#endif
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+#if __cplusplus >= 201103L
+#define __cpp_lib_allocator_traits_is_always_equal 201411L
+
+ /// @cond undocumented
+ struct __allocator_traits_base
+ {
+ template
+ struct __rebind : __replace_first_arg<_Tp, _Up>
+ {
+ static_assert(is_same<
+ typename __replace_first_arg<_Tp, typename _Tp::value_type>::type,
+ _Tp>::value,
+ "allocator_traits::rebind_alloc must be A");
+ };
+
+ template
+ struct __rebind<_Tp, _Up,
+ __void_t::other>>
+ {
+ using type = typename _Tp::template rebind<_Up>::other;
+
+ static_assert(is_same<
+ typename _Tp::template rebind::other,
+ _Tp>::value,
+ "allocator_traits::rebind_alloc must be A");
+ };
+
+ protected:
+ template
+ using __pointer = typename _Tp::pointer;
+ template
+ using __c_pointer = typename _Tp::const_pointer;
+ template
+ using __v_pointer = typename _Tp::void_pointer;
+ template
+ using __cv_pointer = typename _Tp::const_void_pointer;
+ template
+ using __pocca = typename _Tp::propagate_on_container_copy_assignment;
+ template
+ using __pocma = typename _Tp::propagate_on_container_move_assignment;
+ template
+ using __pocs = typename _Tp::propagate_on_container_swap;
+ template
+ using __equal = __type_identity;
+ };
+
+ template
+ using __alloc_rebind
+ = typename __allocator_traits_base::template __rebind<_Alloc, _Up>::type;
+ /// @endcond
+
+ /**
+ * @brief Uniform interface to all allocator types.
+ * @headerfile memory
+ * @ingroup allocators
+ * @since C++11
+ */
+ template
+ struct allocator_traits : __allocator_traits_base
+ {
+ /// The allocator type
+ typedef _Alloc allocator_type;
+ /// The allocated type
+ typedef typename _Alloc::value_type value_type;
+
+ /**
+ * @brief The allocator's pointer type.
+ *
+ * @c Alloc::pointer if that type exists, otherwise @c value_type*
+ */
+ using pointer = __detected_or_t;
+
+ private:
+ // Select _Func<_Alloc> or pointer_traits::rebind<_Tp>
+ template class _Func, typename _Tp, typename = void>
+ struct _Ptr
+ {
+ using type = typename pointer_traits::template rebind<_Tp>;
+ };
+
+ template class _Func, typename _Tp>
+ struct _Ptr<_Func, _Tp, __void_t<_Func<_Alloc>>>
+ {
+ using type = _Func<_Alloc>;
+ };
+
+ // Select _A2::difference_type or pointer_traits<_Ptr>::difference_type
+ template
+ struct _Diff
+ { using type = typename pointer_traits<_PtrT>::difference_type; };
+
+ template
+ struct _Diff<_A2, _PtrT, __void_t>
+ { using type = typename _A2::difference_type; };
+
+ // Select _A2::size_type or make_unsigned<_DiffT>::type
+ template
+ struct _Size : make_unsigned<_DiffT> { };
+
+ template
+ struct _Size<_A2, _DiffT, __void_t>
+ { using type = typename _A2::size_type; };
+
+ public:
+ /**
+ * @brief The allocator's const pointer type.
+ *
+ * @c Alloc::const_pointer if that type exists, otherwise
+ * pointer_traits::rebind
+ */
+ using const_pointer = typename _Ptr<__c_pointer, const value_type>::type;
+
+ /**
+ * @brief The allocator's void pointer type.
+ *
+ * @c Alloc::void_pointer if that type exists, otherwise
+ * pointer_traits::rebind
+ */
+ using void_pointer = typename _Ptr<__v_pointer, void>::type;
+
+ /**
+ * @brief The allocator's const void pointer type.
+ *
+ * @c Alloc::const_void_pointer if that type exists, otherwise
+ * pointer_traits::rebind
+ */
+ using const_void_pointer = typename _Ptr<__cv_pointer, const void>::type;
+
+ /**
+ * @brief The allocator's difference type
+ *
+ * @c Alloc::difference_type if that type exists, otherwise
+ * pointer_traits::difference_type
+ */
+ using difference_type = typename _Diff<_Alloc, pointer>::type;
+
+ /**
+ * @brief The allocator's size type
+ *
+ * @c Alloc::size_type if that type exists, otherwise
+ * make_unsigned::type
+ */
+ using size_type = typename _Size<_Alloc, difference_type>::type;
+
+ /**
+ * @brief How the allocator is propagated on copy assignment
+ *
+ * @c Alloc::propagate_on_container_copy_assignment if that type exists,
+ * otherwise @c false_type
+ */
+ using propagate_on_container_copy_assignment
+ = __detected_or_t;
+
+ /**
+ * @brief How the allocator is propagated on move assignment
+ *
+ * @c Alloc::propagate_on_container_move_assignment if that type exists,
+ * otherwise @c false_type
+ */
+ using propagate_on_container_move_assignment
+ = __detected_or_t;
+
+ /**
+ * @brief How the allocator is propagated on swap
+ *
+ * @c Alloc::propagate_on_container_swap if that type exists,
+ * otherwise @c false_type
+ */
+ using propagate_on_container_swap
+ = __detected_or_t;
+
+ /**
+ * @brief Whether all instances of the allocator type compare equal.
+ *
+ * @c Alloc::is_always_equal if that type exists,
+ * otherwise @c is_empty::type
+ */
+ using is_always_equal
+ = typename __detected_or_t, __equal, _Alloc>::type;
+
+ template
+ using rebind_alloc = __alloc_rebind<_Alloc, _Tp>;
+ template
+ using rebind_traits = allocator_traits>;
+
+ private:
+ template
+ static constexpr auto
+ _S_allocate(_Alloc2& __a, size_type __n, const_void_pointer __hint, int)
+ -> decltype(__a.allocate(__n, __hint))
+ { return __a.allocate(__n, __hint); }
+
+ template
+ static constexpr pointer
+ _S_allocate(_Alloc2& __a, size_type __n, const_void_pointer, ...)
+ { return __a.allocate(__n); }
+
+ template
+ struct __construct_helper
+ {
+ template()->construct(
+ std::declval<_Tp*>(), std::declval<_Args>()...))>
+ static true_type __test(int);
+
+ template
+ static false_type __test(...);
+
+ using type = decltype(__test<_Alloc>(0));
+ };
+
+ template
+ using __has_construct
+ = typename __construct_helper<_Tp, _Args...>::type;
+
+ template
+ static _GLIBCXX14_CONSTEXPR _Require<__has_construct<_Tp, _Args...>>
+ _S_construct(_Alloc& __a, _Tp* __p, _Args&&... __args)
+ noexcept(noexcept(__a.construct(__p, std::forward<_Args>(__args)...)))
+ { __a.construct(__p, std::forward<_Args>(__args)...); }
+
+ template
+ static _GLIBCXX14_CONSTEXPR
+ _Require<__and_<__not_<__has_construct<_Tp, _Args...>>,
+ is_constructible<_Tp, _Args...>>>
+ _S_construct(_Alloc&, _Tp* __p, _Args&&... __args)
+ noexcept(std::is_nothrow_constructible<_Tp, _Args...>::value)
+ {
+#if __cplusplus <= 201703L
+ ::new((void*)__p) _Tp(std::forward<_Args>(__args)...);
+#else
+ std::construct_at(__p, std::forward<_Args>(__args)...);
+#endif
+ }
+
+ template
+ static _GLIBCXX14_CONSTEXPR auto
+ _S_destroy(_Alloc2& __a, _Tp* __p, int)
+ noexcept(noexcept(__a.destroy(__p)))
+ -> decltype(__a.destroy(__p))
+ { __a.destroy(__p); }
+
+ template
+ static _GLIBCXX14_CONSTEXPR void
+ _S_destroy(_Alloc2&, _Tp* __p, ...)
+ noexcept(std::is_nothrow_destructible<_Tp>::value)
+ { std::_Destroy(__p); }
+
+ template
+ static constexpr auto
+ _S_max_size(_Alloc2& __a, int)
+ -> decltype(__a.max_size())
+ { return __a.max_size(); }
+
+ template
+ static constexpr size_type
+ _S_max_size(_Alloc2&, ...)
+ {
+ // _GLIBCXX_RESOLVE_LIB_DEFECTS
+ // 2466. allocator_traits::max_size() default behavior is incorrect
+ return __gnu_cxx::__numeric_traits::__max
+ / sizeof(value_type);
+ }
+
+ template
+ static constexpr auto
+ _S_select(_Alloc2& __a, int)
+ -> decltype(__a.select_on_container_copy_construction())
+ { return __a.select_on_container_copy_construction(); }
+
+ template
+ static constexpr _Alloc2
+ _S_select(_Alloc2& __a, ...)
+ { return __a; }
+
+ public:
+
+ /**
+ * @brief Allocate memory.
+ * @param __a An allocator.
+ * @param __n The number of objects to allocate space for.
+ *
+ * Calls @c a.allocate(n)
+ */
+ _GLIBCXX_NODISCARD static _GLIBCXX20_CONSTEXPR pointer
+ allocate(_Alloc& __a, size_type __n)
+ { return __a.allocate(__n); }
+
+ /**
+ * @brief Allocate memory.
+ * @param __a An allocator.
+ * @param __n The number of objects to allocate space for.
+ * @param __hint Aid to locality.
+ * @return Memory of suitable size and alignment for @a n objects
+ * of type @c value_type
+ *
+ * Returns a.allocate(n, hint) if that expression is
+ * well-formed, otherwise returns @c a.allocate(n)
+ */
+ _GLIBCXX_NODISCARD static _GLIBCXX20_CONSTEXPR pointer
+ allocate(_Alloc& __a, size_type __n, const_void_pointer __hint)
+ { return _S_allocate(__a, __n, __hint, 0); }
+
+ /**
+ * @brief Deallocate memory.
+ * @param __a An allocator.
+ * @param __p Pointer to the memory to deallocate.
+ * @param __n The number of objects space was allocated for.
+ *
+ * Calls a.deallocate(p, n)
+ */
+ static _GLIBCXX20_CONSTEXPR void
+ deallocate(_Alloc& __a, pointer __p, size_type __n)
+ { __a.deallocate(__p, __n); }
+
+ /**
+ * @brief Construct an object of type `_Tp`
+ * @param __a An allocator.
+ * @param __p Pointer to memory of suitable size and alignment for Tp
+ * @param __args Constructor arguments.
+ *
+ * Calls __a.construct(__p, std::forward(__args)...)
+ * if that expression is well-formed, otherwise uses placement-new
+ * to construct an object of type @a _Tp at location @a __p from the
+ * arguments @a __args...
+ */
+ template
+ static _GLIBCXX20_CONSTEXPR auto
+ construct(_Alloc& __a, _Tp* __p, _Args&&... __args)
+ noexcept(noexcept(_S_construct(__a, __p,
+ std::forward<_Args>(__args)...)))
+ -> decltype(_S_construct(__a, __p, std::forward<_Args>(__args)...))
+ { _S_construct(__a, __p, std::forward<_Args>(__args)...); }
+
+ /**
+ * @brief Destroy an object of type @a _Tp
+ * @param __a An allocator.
+ * @param __p Pointer to the object to destroy
+ *
+ * Calls @c __a.destroy(__p) if that expression is well-formed,
+ * otherwise calls @c __p->~_Tp()
+ */
+ template
+ static _GLIBCXX20_CONSTEXPR void
+ destroy(_Alloc& __a, _Tp* __p)
+ noexcept(noexcept(_S_destroy(__a, __p, 0)))
+ { _S_destroy(__a, __p, 0); }
+
+ /**
+ * @brief The maximum supported allocation size
+ * @param __a An allocator.
+ * @return @c __a.max_size() or @c numeric_limits::max()
+ *
+ * Returns @c __a.max_size() if that expression is well-formed,
+ * otherwise returns @c numeric_limits::max()
+ */
+ static _GLIBCXX20_CONSTEXPR size_type
+ max_size(const _Alloc& __a) noexcept
+ { return _S_max_size(__a, 0); }
+
+ /**
+ * @brief Obtain an allocator to use when copying a container.
+ * @param __rhs An allocator.
+ * @return @c __rhs.select_on_container_copy_construction() or @a __rhs
+ *
+ * Returns @c __rhs.select_on_container_copy_construction() if that
+ * expression is well-formed, otherwise returns @a __rhs
+ */
+ static _GLIBCXX20_CONSTEXPR _Alloc
+ select_on_container_copy_construction(const _Alloc& __rhs)
+ { return _S_select(__rhs, 0); }
+ };
+
+#if _GLIBCXX_HOSTED
+
+#if __cplusplus > 201703L
+# define __cpp_lib_constexpr_dynamic_alloc 201907L
+#endif
+
+ /// Partial specialization for std::allocator.
+ template
+ struct allocator_traits>
+ {
+ /// The allocator type
+ using allocator_type = allocator<_Tp>;
+
+ /// The allocated type
+ using value_type = _Tp;
+
+ /// The allocator's pointer type.
+ using pointer = _Tp*;
+
+ /// The allocator's const pointer type.
+ using const_pointer = const _Tp*;
+
+ /// The allocator's void pointer type.
+ using void_pointer = void*;
+
+ /// The allocator's const void pointer type.
+ using const_void_pointer = const void*;
+
+ /// The allocator's difference type
+ using difference_type = std::ptrdiff_t;
+
+ /// The allocator's size type
+ using size_type = std::size_t;
+
+ /// How the allocator is propagated on copy assignment
+ using propagate_on_container_copy_assignment = false_type;
+
+ /// How the allocator is propagated on move assignment
+ using propagate_on_container_move_assignment = true_type;
+
+ /// How the allocator is propagated on swap
+ using propagate_on_container_swap = false_type;
+
+ /// Whether all instances of the allocator type compare equal.
+ using is_always_equal = true_type;
+
+ template
+ using rebind_alloc = allocator<_Up>;
+
+ template
+ using rebind_traits = allocator_traits>;
+
+ /**
+ * @brief Allocate memory.
+ * @param __a An allocator.
+ * @param __n The number of objects to allocate space for.
+ *
+ * Calls @c a.allocate(n)
+ */
+ [[__nodiscard__,__gnu__::__always_inline__]]
+ static _GLIBCXX20_CONSTEXPR pointer
+ allocate(allocator_type& __a, size_type __n)
+ { return __a.allocate(__n); }
+
+ /**
+ * @brief Allocate memory.
+ * @param __a An allocator.
+ * @param __n The number of objects to allocate space for.
+ * @param __hint Aid to locality.
+ * @return Memory of suitable size and alignment for @a n objects
+ * of type @c value_type
+ *
+ * Returns a.allocate(n, hint)
+ */
+ [[__nodiscard__,__gnu__::__always_inline__]]
+ static _GLIBCXX20_CONSTEXPR pointer
+ allocate(allocator_type& __a, size_type __n, const_void_pointer __hint)
+ {
+#if __cplusplus <= 201703L
+ return __a.allocate(__n, __hint);
+#else
+ return __a.allocate(__n);
+#endif
+ }
+
+ /**
+ * @brief Deallocate memory.
+ * @param __a An allocator.
+ * @param __p Pointer to the memory to deallocate.
+ * @param __n The number of objects space was allocated for.
+ *
+ * Calls a.deallocate(p, n)
+ */
+ [[__gnu__::__always_inline__]]
+ static _GLIBCXX20_CONSTEXPR void
+ deallocate(allocator_type& __a, pointer __p, size_type __n)
+ { __a.deallocate(__p, __n); }
+
+ /**
+ * @brief Construct an object of type `_Up`
+ * @param __a An allocator.
+ * @param __p Pointer to memory of suitable size and alignment for
+ * an object of type `_Up`.
+ * @param __args Constructor arguments.
+ *
+ * Calls `__a.construct(__p, std::forward<_Args>(__args)...)`
+ * in C++11, C++14 and C++17. Changed in C++20 to call
+ * `std::construct_at(__p, std::forward<_Args>(__args)...)` instead.
+ */
+ template
+ [[__gnu__::__always_inline__]]
+ static _GLIBCXX20_CONSTEXPR void
+ construct(allocator_type& __a __attribute__((__unused__)), _Up* __p,
+ _Args&&... __args)
+ noexcept(std::is_nothrow_constructible<_Up, _Args...>::value)
+ {
+#if __cplusplus <= 201703L
+ __a.construct(__p, std::forward<_Args>(__args)...);
+#else
+ std::construct_at(__p, std::forward<_Args>(__args)...);
+#endif
+ }
+
+ /**
+ * @brief Destroy an object of type @a _Up
+ * @param __a An allocator.
+ * @param __p Pointer to the object to destroy
+ *
+ * Calls @c __a.destroy(__p).
+ */
+ template
+ [[__gnu__::__always_inline__]]
+ static _GLIBCXX20_CONSTEXPR void
+ destroy(allocator_type& __a __attribute__((__unused__)), _Up* __p)
+ noexcept(is_nothrow_destructible<_Up>::value)
+ {
+#if __cplusplus <= 201703L
+ __a.destroy(__p);
+#else
+ std::destroy_at(__p);
+#endif
+ }
+
+ /**
+ * @brief The maximum supported allocation size
+ * @param __a An allocator.
+ * @return @c __a.max_size()
+ */
+ [[__gnu__::__always_inline__]]
+ static _GLIBCXX20_CONSTEXPR size_type
+ max_size(const allocator_type& __a __attribute__((__unused__))) noexcept
+ {
+#if __cplusplus <= 201703L
+ return __a.max_size();
+#else
+ return size_t(-1) / sizeof(value_type);
+#endif
+ }
+
+ /**
+ * @brief Obtain an allocator to use when copying a container.
+ * @param __rhs An allocator.
+ * @return @c __rhs
+ */
+ [[__gnu__::__always_inline__]]
+ static _GLIBCXX20_CONSTEXPR allocator_type
+ select_on_container_copy_construction(const allocator_type& __rhs)
+ { return __rhs; }
+ };
+
+ /// Explicit specialization for std::allocator.
+ template<>
+ struct allocator_traits>
+ {
+ /// The allocator type
+ using allocator_type = allocator;
+
+ /// The allocated type
+ using value_type = void;
+
+ /// The allocator's pointer type.
+ using pointer = void*;
+
+ /// The allocator's const pointer type.
+ using const_pointer = const void*;
+
+ /// The allocator's void pointer type.
+ using void_pointer = void*;
+
+ /// The allocator's const void pointer type.
+ using const_void_pointer = const void*;
+
+ /// The allocator's difference type
+ using difference_type = std::ptrdiff_t;
+
+ /// The allocator's size type
+ using size_type = std::size_t;
+
+ /// How the allocator is propagated on copy assignment
+ using propagate_on_container_copy_assignment = false_type;
+
+ /// How the allocator is propagated on move assignment
+ using propagate_on_container_move_assignment = true_type;
+
+ /// How the allocator is propagated on swap
+ using propagate_on_container_swap = false_type;
+
+ /// Whether all instances of the allocator type compare equal.
+ using is_always_equal = true_type;
+
+ template
+ using rebind_alloc = allocator<_Up>;
+
+ template
+ using rebind_traits = allocator_traits>;
+
+ /// allocate is ill-formed for allocator
+ static void*
+ allocate(allocator_type&, size_type, const void* = nullptr) = delete;
+
+ /// deallocate is ill-formed for allocator
+ static void
+ deallocate(allocator_type&, void*, size_type) = delete;
+
+ /**
+ * @brief Construct an object of type `_Up`
+ * @param __a An allocator.
+ * @param __p Pointer to memory of suitable size and alignment for
+ * an object of type `_Up`.
+ * @param __args Constructor arguments.
+ *
+ * Calls `__a.construct(__p, std::forward<_Args>(__args)...)`
+ * in C++11, C++14 and C++17. Changed in C++20 to call
+ * `std::construct_at(__p, std::forward<_Args>(__args)...)` instead.
+ */
+ template
+ [[__gnu__::__always_inline__]]
+ static _GLIBCXX20_CONSTEXPR void
+ construct(allocator_type&, _Up* __p, _Args&&... __args)
+ noexcept(std::is_nothrow_constructible<_Up, _Args...>::value)
+ { std::_Construct(__p, std::forward<_Args>(__args)...); }
+
+ /**
+ * @brief Destroy an object of type `_Up`
+ * @param __a An allocator.
+ * @param __p Pointer to the object to destroy
+ *
+ * Invokes the destructor for `*__p`.
+ */
+ template
+ [[__gnu__::__always_inline__]]
+ static _GLIBCXX20_CONSTEXPR void
+ destroy(allocator_type&, _Up* __p)
+ noexcept(is_nothrow_destructible<_Up>::value)
+ { std::_Destroy(__p); }
+
+ /// max_size is ill-formed for allocator
+ static size_type
+ max_size(const allocator_type&) = delete;
+
+ /**
+ * @brief Obtain an allocator to use when copying a container.
+ * @param __rhs An allocator.
+ * @return `__rhs`
+ */
+ [[__gnu__::__always_inline__]]
+ static _GLIBCXX20_CONSTEXPR allocator_type
+ select_on_container_copy_construction(const allocator_type& __rhs)
+ { return __rhs; }
+ };
+#endif
+
+ /// @cond undocumented
+#if __cplusplus < 201703L
+ template
+ [[__gnu__::__always_inline__]]
+ inline void
+ __do_alloc_on_copy(_Alloc& __one, const _Alloc& __two, true_type)
+ { __one = __two; }
+
+ template
+ [[__gnu__::__always_inline__]]
+ inline void
+ __do_alloc_on_copy(_Alloc&, const _Alloc&, false_type)
+ { }
+#endif
+
+ template
+ [[__gnu__::__always_inline__]]
+ _GLIBCXX14_CONSTEXPR inline void
+ __alloc_on_copy(_Alloc& __one, const _Alloc& __two)
+ {
+ using __traits = allocator_traits<_Alloc>;
+ using __pocca =
+ typename __traits::propagate_on_container_copy_assignment::type;
+#if __cplusplus >= 201703L
+ if constexpr (__pocca::value)
+ __one = __two;
+#else
+ __do_alloc_on_copy(__one, __two, __pocca());
+#endif
+ }
+
+ template
+ [[__gnu__::__always_inline__]]
+ constexpr _Alloc
+ __alloc_on_copy(const _Alloc& __a)
+ {
+ typedef allocator_traits<_Alloc> __traits;
+ return __traits::select_on_container_copy_construction(__a);
+ }
+
+#if __cplusplus < 201703L
+ template
+ [[__gnu__::__always_inline__]]
+ inline void __do_alloc_on_move(_Alloc& __one, _Alloc& __two, true_type)
+ { __one = std::move(__two); }
+
+ template
+ [[__gnu__::__always_inline__]]
+ inline void __do_alloc_on_move(_Alloc&, _Alloc&, false_type)
+ { }
+#endif
+
+ template
+ [[__gnu__::__always_inline__]]
+ _GLIBCXX14_CONSTEXPR inline void
+ __alloc_on_move(_Alloc& __one, _Alloc& __two)
+ {
+ using __traits = allocator_traits<_Alloc>;
+ using __pocma
+ = typename __traits::propagate_on_container_move_assignment::type;
+#if __cplusplus >= 201703L
+ if constexpr (__pocma::value)
+ __one = std::move(__two);
+#else
+ __do_alloc_on_move(__one, __two, __pocma());
+#endif
+ }
+
+#if __cplusplus < 201703L
+ template
+ [[__gnu__::__always_inline__]]
+ inline void __do_alloc_on_swap(_Alloc& __one, _Alloc& __two, true_type)
+ {
+ using std::swap;
+ swap(__one, __two);
+ }
+
+ template
+ [[__gnu__::__always_inline__]]
+ inline void __do_alloc_on_swap(_Alloc&, _Alloc&, false_type)
+ { }
+#endif
+
+ template
+ [[__gnu__::__always_inline__]]
+ _GLIBCXX14_CONSTEXPR inline void
+ __alloc_on_swap(_Alloc& __one, _Alloc& __two)
+ {
+ using __traits = allocator_traits<_Alloc>;
+ using __pocs = typename __traits::propagate_on_container_swap::type;
+#if __cplusplus >= 201703L
+ if constexpr (__pocs::value)
+ {
+ using std::swap;
+ swap(__one, __two);
+ }
+#else
+ __do_alloc_on_swap(__one, __two, __pocs());
+#endif
+ }
+
+ template